зависимости библиотеки node-gyp link во время сборки


Мой nodejs аддон использует библиотеку cares, а мой binding.gyp имеет атрибут dependencies, который указывает на это. Теперь всякий раз, когда мне нужно запустить addon, я должен экспортировать переменную LD_LIBRARY_PATH.

Есть ли способ настроить это в binding.gyp так, чтобы каждый раз мне не нужно было устанавливать LD_LIBRARY_PATH. (Связывание во время сборки)

Установка зависимостей в привязке.джип: "dependencies": [ "deps/cares/cares.gyp:cares" ]

Ex export: export LD_LIBRARY_PATH=build/Release

3 12

3 ответа:

"libraries": [ "-Wl,-rpath,./build/Release/" ]

Работал для меня на Mac, а также Linux (Ubuntu).

Мой ответ на Как добавить зависимость в статическую библиотеку в привязке.gyp node-gyp для узла.расширение js , похоже, применимо и здесь, и должно быть кроссплатформенным.

Короче говоря, он использует module_root_dir и строит абсолютный путь. Пример:
"libraries": [
    "-lcares",
    "-L<(module_root_dir)/build/Release/"
]

Мне удалось получить относительный путь в Ubuntu & Debian, используя следующую строку binding.gyp:

"libraries": [ "../lib/somelib/somelib.a" ]

Моя структура папок выглядит следующим образом:

|--binding.gyp
|--app.cc
|--lib
   |--somelib
      |--somelib.a

Я получил метод (несколько косвенно) отсюда: https://github.com/nodejs/node-gyp/issues/49