Ссылка .so или .dylib из каталога пакета при использовании node-gyp - PullRequest
0 голосов
/ 10 октября 2019

Я разрабатываю 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.

...