我正在部署一个node-js应用程序到heroku,它需要npm包imagemagic-native。
我让构建包安装libmagick++-dev
并导出包含路径:
export INCLUDE_PATH="$BUILD_DIR/.apt/usr/include:$INCLUDE_PATH"
export CPATH="$INCLUDE_PATH"
export CPPPATH="$INCLUDE_PATH"
在安装npm install
的imagemagic-native
包时,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
这意味着gcc看不到libmagick++
的头文件,因为$CCPATH
对它不可用。
如何让npm install
将路径添加到node-gyp使用的include_dirs
列表中?
有关我的使用案例的更多详细信息,请访问:Using Magick++ in a node.js application on heroku
4条答案
按热度按时间8ftvxx2r1#
请尝试:
将环境变量CXX=/path/设置为/g++ -Ipath/设置为/include
然后重新启动进程。如果使用bash,则通过
/path/to/include是丢失的头文件Magick ++. h所在的位置
如果这样做不起作用,您可能必须手动设置CXX,以便在/tmp/build_720834c3a32b65d69ae603d7c618e20f/node_modules/imagemagick-native/build下生成文件中包含-I,然后将其写入该目录并调用make。
t3irkdon2#
我花了一些时间试图回答同样的问题。最后,我找到了正确的方法来完成这个here。你需要在
~/.node-gyp/x.x.x/common.gypi
中设置'include_dirs'
属性。这就是我在Mac OS上将include目录设置为/opt/local/include/
的方法(这是所有macports安装的位置):虽然我不确定它是否适用于英雄的环境。
iswrvxsc3#
你也可以在你的项目绑定.gyp文件中使用“include_dirs”选项。
pxiryf3j4#
你现在可以做
OTHER_CFLAGS='-I/usr/local/include'
了。参见https://github.com/nickdesaulniers/node-nanomsg/pull/144