gcc 为节点gyp添加包含目录

5gfr0r5j  于 2022-11-13  发布在  其他
关注(0)|答案(4)|浏览(184)

我正在部署一个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 installimagemagic-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

8ftvxx2r

8ftvxx2r1#

请尝试:
将环境变量CXX=/path/设置为/g++ -Ipath/设置为/include
然后重新启动进程。如果使用bash,则通过

export CXX="/path/to/g++ -Ipath/to/include"

/path/to/include是丢失的头文件Magick ++. h所在的位置
如果这样做不起作用,您可能必须手动设置CXX,以便在/tmp/build_720834c3a32b65d69ae603d7c618e20f/node_modules/imagemagick-native/build下生成文件中包含-I,然后将其写入该目录并调用make。

t3irkdon

t3irkdon2#

我花了一些时间试图回答同样的问题。最后,我找到了正确的方法来完成这个here。你需要在~/.node-gyp/x.x.x/common.gypi中设置'include_dirs'属性。这就是我在Mac OS上将include目录设置为/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',
...

虽然我不确定它是否适用于英雄的环境。

iswrvxsc

iswrvxsc3#

你也可以在你的项目绑定.gyp文件中使用“include_dirs”选项。

pxiryf3j

pxiryf3j4#

你现在可以做OTHER_CFLAGS='-I/usr/local/include'了。参见https://github.com/nickdesaulniers/node-nanomsg/pull/144

相关问题