添加节点gyp的包含目录

d_i*_*ble 4 gcc node.js gyp npm node-gyp

我正在将一个node-js应用程序部署到需要npm软件包imagemagic-native的 heroku 。

我安装了buildpack,libmagick++-dev并导出了包含路径:

export INCLUDE_PATH="$BUILD_DIR/.apt/usr/include:$INCLUDE_PATH"
export CPATH="$INCLUDE_PATH"
export CPPPATH="$INCLUDE_PATH"
Run Code Online (Sandbox Code Playgroud)

使用安装imagemagic-native软件包后npm install,将调用node-gyp编译其二进制文件。但是我得到这个错误:

remote:        > imagemagick-native@1.7.0 install /tmp/build_720834c3a32b65d69ae603d7c618e20f/node_modules/imagemagick-native
remote:        > node-gyp rebuild
remote:        
remote:        make: Entering directory `/tmp/build_720834c3a32b65d69ae603d7c618e20f/node_modules/imagemagick-native/build'
remote:          CXX(target) Release/obj.target/imagemagick/src/imagemagick.o
remote:        In file included from ../src/imagemagick.cc:9:
remote:        ../src/imagemagick.h:1:22: warning: Magick++.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这表明gcc看不到的头文件libmagick++,因为$CCPATH它不可用。

如何npm install将路径添加到该include_dirs节点gyp使用的列表?

关于我的用例的更多详细信息在这里:在heroku的node.js应用程序中使用Magick ++

Qwe*_*yzw 8

尝试:

设置环境变量 CXX=/path/to/g++ -Ipath/to/include

然后重新启动该过程。如果您使用的是 bash,则可以通过以下方式完成

export CXX="/path/to/g++ -Ipath/to/include"
Run Code Online (Sandbox Code Playgroud)

/path/to/include 是缺少的标头 Magick++.h 所在的位置

如果这不起作用,您可能必须手动设置 CXX 以将 -I 包含在 /tmp/build_720834c3a32b65d69ae603d7c618e20f/node_modules/imagemagick-native/build 的 makefile 中,然后进入该目录并调用 make。


dra*_*agn 5

我花了一些时间尝试回答同样的问题。最后,我已经找到了正确的方式做到这一点在这里。您需要在中设置'include_dirs'属性~/.node-gyp/x.x.x/common.gypi。这就是我在Mac OS上将include dir设置为的方式/opt/local/include/(所有macports安装目录都位于此位置):

...
['OS=="mac"', {
  'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
  'include_dirs': ['/opt/local/include'],
  'xcode_settings': {
    'ALWAYS_SEARCH_USER_PATHS': 'NO',
...
Run Code Online (Sandbox Code Playgroud)

虽然我不确定它是否适用于heroku环境。