Как правильно добавить библиотеки swift в собственный модуль для node.js? - PullRequest
0 голосов
/ 09 апреля 2019

Я работаю с настольным приложением для Mac, которое содержит код в swift. Этот код использует библиотеки из MacOS.

Способ включения этих библиотек в наш binding.gyps заключается в следующем:

  1. Перед компиляцией скопируйте библиотеки из */usr/lib/swift/* в пользовательскую папку
  2. В binding.gyp файле добавьте следующие зависимости:

    "libraries": [
        #"-L '../swiftlib/' -lswiftAppKit -lswiftCoreData -lswiftMetal -lswiftCoreImage -lswiftDispatch -lswiftObjectiveC -lswiftDarwin -lswiftFoundation -lswiftXPC -lswiftCoreFoundation -lswiftIOKit -lswiftCoreGraphics -lswiftQuartzCore -lswiftCore",
        #"-Wl,-rpath,@loader_path/../../swiftlib"
    ]
    
  3. Модуль компиляции.

У нас есть два компьютера для тестирования: один с версией ОС 10.14.4 и один с версией ОС 10.14.2.

Если модуль скомпилирован на одном или другом компьютере Mac, появляются несовместимости из-за библиотек.

Ошибка в 10.14.2 при использовании 10.14.4 библиотек:

Error: dlopen(/Applications/MyApp.app/Contents/Resources/app/node_modules/src-native-mac/build/Release/src_cpp.node, 1): Library not loaded: /usr/lib/swift/libswiftAppKit.dylib
Referenced from: /Applications/MyApp.app/Contents/Resources/app/node_modules/src-native-mac/build/Release/src_cpp.node
Reason: image not found
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:166:20)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:740:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:166:20)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:559:12)
at Function.Module._load (internal/modules/cjs/loader.js:551:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
at require (internal/modules/cjs/helpers.js:20:18)
at bindings (/Applications/MyApp.app/Contents/Resources/app/node_modules/src-native-mac/node_modules/bindings/bindings.js:112:48)
at Object.<anonymous> (/Applications/MyApp.app/Contents/Resources/app/node_modules/src-native-mac/index.js:5:35)

Ошибка в 10.14.4 при использовании 10.14.2 библиотек:

This copy of libswiftCore.dylib requires an OS version prior to 10.14.4.

Мы хотим иметь возможность распространять это приложение для всех версий Mac без необходимости фактически предоставлять различные продукты. Кроме того, я не уверен, что этот способ включения библиотек является лучшим. Какие варианты у нас есть?

...