Я разрабатываю Node C ++ Addon для использования некоторой библиотеки C ++, которую я скомпилировал в файл .so для linux и файл .dylib для macOS. Можно ли связать файлы .so / .dylib непосредственно из того же каталога, где находится файл bindings.gyp?
В настоящее время мой сценарий копирует файлы в системные каталоги (например, / usr / lib для .so и /). usr / include для файлов .h), но я бы предпочел этого не делать, так как это не совсем правильный способ. Я перепробовал много конфигов bindings.gyp, но ни один из них не сработал. Некоторые из них вообще не компилировались в аддон узла, а некоторые выдавали ошибки при запуске файла .js с require () в этот файл.
Мое дерево файлов выглядит так:
npm_package
|_binding.gyp
|_index.js
|_lib
|_libdosth.so
|_headers
|_dosth.h
|_src
|_main.cpp
А gyp config - это
{
"targets": [
{
"target_name": "dosth",
"sources": ["./src/main.cpp"],
"include_dirs": ["<!@(node -p \"require('node-addon-api').include\")",],
"conditions": [
['OS=="mac"', {"libraries": ["libmorfeusz2.dylib"]}],
['OS=="linux"', {"libraries": ["-lmorfeusz2", "-L/usr/lib"]}]
],
}
]
}
Я ожидаю, что заголовки и более важные файлы .so и .dylib будут создаваться и связываться без их копирования, только из каталогов npm_package/headers
и npm_package/lib
.