window 下生成NodeJs(v8.9.3) 的 VS2015 解决方案node.sln

使用步骤 也可以参照 github:

https://github.com/nodejs/node/blob/master/BUILDING.md#windows-1

1. 从 github 同步

https://github.com/nodejs/node

2.安装 python 2.7 或者 2.6

https://www.python.org/downloads/

当然, 如果有Python 环境, 就跳过好了

3. 修改 common.gypi

因为如果 不修改的话, 会报好多错误的....

E:\Projects\C++\node-git\trunk\tools>gyp_node.py  -Dtarget_arch=x64 -f msvs
gyp: name 'node_shared' is not defined while evaluating condition 'node_shared=="true"' in E:\Projects\C++\node-git\trunk\node.gyp E:\Projects\C++\node-git\trunk\tools>gyp_node.py -Dtarget_arch=x64 -f msvs
gyp: name 'node_shared' is not defined while evaluating condition 'node_shared=="true"' in E:\Projects\C++\node-git\trunk\node.gyp E:\Projects\C++\node-git\trunk\tools>gyp_node.py -Dtarget_arch=x64 -f msvs
gyp: name 'node_use_openssl' is not defined while evaluating condition 'OS=="win" and node_use_openssl=="true" and node_shared_openssl=="false"' in E:\Projects\C++\node-git\trunk\node.gyp E:\Projects\C++\node-git\trunk\tools>gyp_node.py -Dtarget_arch=x64 -f msvs
gyp: name 'node_shared_openssl' is not defined while evaluating condition 'OS=="win" and node_use_openssl=="true" and node_shared_openssl=="false"' in E:\Projects\C++\node-git\trunk\node.gyp E:\Projects\C++\node-git\trunk\tools>gyp_node.py -Dtarget_arch=x64 -f msvs
gyp: name 'openssl_fips' is not defined while evaluating condition 'openssl_fips != ""' in E:\Projects\C++\node-git\trunk\node.gyp E:\Projects\C++\node-git\trunk\tools>gyp_node.py -Dtarget_arch=x64 -f msvs
gyp: name 'v8_enable_inspector' is not defined while evaluating condition 'v8_enable_inspector==1' in E:\Projects\C++\node-git\trunk\node.gyp E:\Projects\C++\node-git\trunk\tools>gyp_node.py -Dtarget_arch=x64 -f msvs
gyp: name 'node_enable_d8' is not defined while evaluating condition 'node_enable_d8=="true"' in E:\Projects\C++\node-git\trunk\node.gyp E:\Projects\C++\node-git\trunk\tools>gyp_node.py -Dtarget_arch=x64 -f msvs
gyp: name 'node_release_urlbase' is not defined while evaluating condition 'node_release_urlbase!=""' in E:\Projects\C++\node-git\trunk\node.gyp E:\Projects\C++\node-git\trunk\tools>gyp_node.py -Dtarget_arch=x64 -f msvs
gyp: name 'debug_http2' is not defined while evaluating condition 'debug_http2==1' in E:\Projects\C++\node-git\trunk\node.gyp E:\Projects\C++\node-git\trunk\tools>gyp_node.py -Dtarget_arch=x64 -f msvs
gyp: name 'v8_enable_i18n_support' is not defined while evaluating condition 'v8_enable_i18n_support==1' in E:\Projects\C++\node-git\trunk\node.gyp

好多变量都没有定义.....

下面是修改的部分(红色粗体字,变量值是我自己的缺少设置,可以改), 文件在主目录下

{
'variables': {
'asan%': 0,
'werror': '', # Turn off -Werror in V8 build.
'visibility%': 'hidden', # V8's visibility setting
'target_arch%': 'ia32', # set v8's target architecture
'host_arch%': 'ia32', # set v8's host architecture
'want_separate_host_toolset%': 0, # V8 should not build target and host
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
'component%': 'static_library', # NB. these names match with what V8 expects
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
'python%': 'python', 'node_shared': 'false',
'node_enable_d8': 'false',
'v8_enable_inspector': 1,
'v8_enable_i18n_support': 'true',
'debug_http2': 1,
'debug_nghttp2': 1,
'node_use_openssl': 'false',
'node_shared_openssl': 'true',
'openssl_fips': '',
'node_release_urlbase': '', 'node_shared%': 'false',
'force_dynamic_crt%': 0,
'node_use_v8_platform%': 'true',
'node_use_bundled_v8%': 'true',
'node_module_version%': '',
.....

4.修改 deps\v8\src\v8.gyp

貌似调用 deps\v8\src\v8.gyp 的时候, 有个参数没有传进去,target_arch的值我用的 是 'x64':

E:\Projects\C++\node-git\trunk\tools>gyp_node.py  -Dtarget_arch=x64 -f msvs
gyp: name 'debug_nghttp2' is not defined while evaluating condition 'debug_nghttp2 == 1' in E:\Projects\C++\node-git\trunk\deps\nghttp2\nghttp2.gyp
gyp: Undefined variable target_arch in E:\Projects\C++\node-git\trunk\deps\v8\src\v8.gyp

所以,手动加了这个变量

{
'variables': {
'target_arch': 'x64', 'v8_code': 1,
.....

5. 生成 解决方案

一般来说,使用 gyp 生成 VS 的解决方案的, 都是 使用类似的 命令行:

"gyp_XXXX.py  -Dtarget_arch=x64 -f msvs"    XXXX 就是工程/解决方案名,例如 V8的 就是 gyp_V8.gyp; Node的就是gyp_node.gyp
tools>gyp_node.py  -Dtarget_arch=x64 -f msvs

Over!

6.如果 用 vcbuild.bat 生成, 就不会有这些错误

以上是直接 运行 gyp_node.py  会产生 缺少 变量,  但是 如果 用 vcbuild.bat, 就不会.  >>git上有issue说明<< ^_^

window 下生成NodeJs(v8.9.3) 的 VS2015 解决方案node.sln的更多相关文章

  1. Window下配置NodeJs环境详解

        今年打算学习Web这块,所以就买了本Node.js+MongoDb+AngularJS这本书,这周天也比较忙,想着录视频(拍小片,不是AV,不要误会,是在线课程)的事情,这周又将Asp.Net ...

  2. Window下对nodejs多版本管理GNVM

    Windows下对nodejs多版本的管理,实现随意切换! 官方地址: https://github.com/Kenshin/gnvm http://ksria.com/gnvm/ 01.下载GNVM ...

  3. Window下生成OpenSSL自签证书

    :OPenSSL下载地址:https://www.openssl.org/source/ 编译好的OpenSSL下载地址: http://slproweb.com/products/Win32Open ...

  4. window下,nodejs 安装 http-server,开启命令行HTTP服务器

    第一步:http://nodejs.cn/  官网下载安装文件,安装nodejs: 第二步:运行中输入cmd进入命令行模式,输入  node -v ,显示版本号,代表安装成功: 第三步:在node命令 ...

  5. linux和window下生成任意大小的文件

    在Windows环境下的实现方法   使用fsutil命令,在windows xp和win 7下应该都自带了这个命令.命令的格式是 fsutil file createnew 新文件名 文件大小.例如 ...

  6. window下安装nodejs

    下载nodejs 去https://nodejs.org/en/download/下载nodejs,有.mis(安装版)和.exe(二进制版) .mis(安装版) 一般下载这个就行,简单方便,自带np ...

  7. window下,nodejs安装http-server,并开启HTTP服务器

    1.下载nodejs  官方下载地址:https://nodejs.org/en/ 2.在cmd命令中,输入node -v 输入出版本号,代表安装成功. 3.输入 npm install http-s ...

  8. window下golang生成静态库给C语言调用

    buidmod为c-archive能在window下生成 ,c-shared则不行 1.golang生成c-archive静态库 main.go package main import "C ...

  9. window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)

    window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)nodemon --watch 'app/**/*' -e ts --exec ...

随机推荐

  1. Selenium滚动条window.scrollTo和window.scrollBy

    Selenium操作滚动条有两种方法,一种就是window.scrollTo,另一种是window.scrollBy,既然两个都可以用来操作滚动条,那这两个方法有什么区别呢? 1.window.scr ...

  2. MySQLdb 部署

    1.windows 下载后,直接安装即可 http://www.jb51.net/softs/73369.html#download 双击安装 MySQL-python-1.2.3.win32-py2 ...

  3. 【深度学习系列】迁移学习Transfer Learning

    在前面的文章中,我们通常是拿到一个任务,譬如图像分类.识别等,搜集好数据后就开始直接用模型进行训练,但是现实情况中,由于设备的局限性.时间的紧迫性等导致我们无法从头开始训练,迭代一两百万次来收敛模型, ...

  4. 自己写的一个tomcat发布脚本

    闲来无事,就自己写一个shell脚本,方便自己以后在服务器上部署tomcat下的项目.我本地用maven打包,然后每次都要人工去切换一堆堆目录,有点繁琐,所以我写了下面的shell脚本. #! /bi ...

  5. SQL Server中的变更捕获技术--简单部署

    ------准备------ CREATE DATABASE db_test_cdc ,) ,name )); INSERT INTO t1(name)VALUES('test') ------开始- ...

  6. MySQL中判断日期间隔的方法

    MySQL中查询一定时间间隔内的数据的方法比较常用,可以使用TO_DAYS.DATE_SUB等函数来实现. TO_DAYS函数的作用是返回指定日期从0年开始计算的天数. DATE_SUB函数的作用是通 ...

  7. 一个ios的各种组件、代码分类,供参考

    http://github.ibireme.com/github/list/ios/#

  8. Android Camera2采集摄像头原始数据并手动预览

    Android Camera2采集摄像头原始数据并手动预览 最近研究了一下android摄像头开发相关的技术,也看了Google提供的Camera2Basic调用示例,以及网上一部分代码,但都是在Te ...

  9. 浅谈python lambda

    lambda x: x * x,实际上就是 def f(x): retrun x * x 关键字lambda表示匿名函数,冒号前的x表示函数参数. 匿名函数只能有一个表达式,不用写return,返回值 ...

  10. TensorFlow-相关 API(学习笔记 )

    1.tf.nn.conv2d conv2d( input, filter, strides, padding, use_cudnn_on_gpu=True, data_format='NHWC', n ...