Добавьте каталог включения для узла gyp
Я развертываю приложение node-js на heroku, для которого требуется пакет nma imagemagic -native.
Я сделал buildpack установить libmagick++-dev
и экспортируйте путь включения:
export INCLUDE_PATH="$BUILD_DIR/.apt/usr/include:$INCLUDE_PATH"
export CPATH="$INCLUDE_PATH"
export CPPPATH="$INCLUDE_PATH"
После установки 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
Это говорит о том, что gcc не видит файлы заголовков для libmagick++
, так как $CCPATH
недоступно для него.
Как я могу сделать npm install
добавить путь к списку include_dirs
что использует node-gyp?
Более подробно о моем случае использования здесь: Использование Magick++ в приложении node.js на heroku
4 ответа
Пытаться:
установка переменной окружения CXX=/path/to/g++ -Ipath/to/include
а затем перезапустить процесс. Если вы используете bash, это делается
export CXX="/path/to/g++ -Ipath/to/include"
В / path / to / include находится отсутствующий заголовок Magick++.h
если это не сработает, вам, возможно, придется вручную установить CXX для включения -I в make-файл по адресу /tmp/build_720834c3a32b65d69ae603d7c618e20f/node_modules/imagemagick-native/build, а затем зайти в этот каталог и вызвать make.
Я провел некоторое время, пытаясь ответить на тот же вопрос. В конце концов, я нашел правильный способ сделать это здесь. Вам нужно установить 'include_dirs'
недвижимость в ~/.node-gyp/x.x.x/common.gypi
, Вот как я установил каталог включения в Mac OS на /opt/local/include/
(куда идут все макпорты):
...
['OS=="mac"', {
'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
'include_dirs': ['/opt/local/include'],
'xcode_settings': {
'ALWAYS_SEARCH_USER_PATHS': 'NO',
...
Хотя я не уверен, что это применимо к окружающей среде героку.
Вы также можете использовать опцию "include_dirs" в вашем файле binding.gyp вашего проекта. Подробнее о доступных опциях читайте на странице описания формата.
Теперь вы можете сделатьOTHER_CFLAGS='-I/usr/local/include'
предположительно. См. https://github.com/nickdesaulniers/node-nanomsg/pull/144.