Библиотека не найдена для -ljson11, но найдена -lsqlite 3

Я пытаюсь реализовать этот учебник с добавлением того, что я хочу включить библиотеку json11 C++.

Я выполнил один и тот же процесс для обоих, загрузив репо с: https://github.com/libmx3/mx3, добавил их в папку /deps/ моего проекта и запустил GYP для создания файлов .xcodeproj для обоих.

Затем я создаю проект C++, добавляю оба проекта в рабочую область и добавляю библиотеки в разделе «Фазы сборки» -> «Связать двоичные файлы с библиотеками».

Когда я нажимаю «Выполнить», сборка завершается с ошибкой ld: library not found for -ljson11.

Я попытался восстановить их и добавить в основной файл xcodeproj. и в целевые зависимости. Я дважды проверил проекты библиотеки, и они идентичны. Я также добавил папки, в которых компилируются файлы .a, в пути поиска библиотеки, но ничего из этого не имеет значения. Если я удалю зависимость json11, проект скомпилируется, но я не могу понять, почему sqlite3 найден и не выдает ошибок, но идентичный проект json11 не будет работать.

Я вижу файлы .a в папке Debug-build, и если я создам их отдельно, ошибок не будет.

Вот полный лог сборки

Ld /Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug/DjinniTest normal x86_64
cd /Users/myuser/Documents/Dev/djinni_test/cpp_project
export MACOSX_DEPLOYMENT_TARGET=10.11
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
-arch x86_64
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
-L/Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug
-L/Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug/..
-F/Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug
-filelist /Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Intermediates/DjinniTest.build/Debug/DjinniTest.build/Objects-normal/x86_64/DjinniTest.LinkFileList
-mmacosx-version-min=10.11
-stdlib=libc++
-ljson11
-lsqlite3
-Xlinker
-dependency_info
-Xlinker /Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Intermediates/DjinniTest.build/Debug/DjinniTest.build/Objects-normal/x86_64/DjinniTest_dependency_info.dat
-o /Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug/DjinniTest

ld: library not found for
 -ljson11
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Редактировать: даже если я добавляю скомпилированные файлы в проект, чтобы они стали черными, он все равно жалуется, что библиотека ljson11 не найдена. Может быть, что-то не так с компиляцией библиотеки?


person Mknsri    schedule 10.12.2015    source источник
comment
А где находится библиотека json11? т.е. где в файловой системе находится файл с именем libjson1.so или libjson1.a?   -  person Some programmer dude    schedule 10.12.2015
comment
Оба libjson11.a и libsqlite3.a находятся в /Users/myuser/Library/Developer/Xcode/DerivedData/DjinniTest-eqaqzcfyskdxupbqpdngkdmoidtq/Build/Products/Debug-iphoneos/   -  person Mknsri    schedule 10.12.2015
comment
Учебник, а также mx3, безусловно, предназначены для iOS и Android, а не для MacOS. Если вы хотите собрать для Mac, вам нужно настроить параметры при запуске gyp, в частности, передать -DOS=mac вместо -DOS=ios   -  person Andrew    schedule 10.12.2015
comment
Первая часть руководства посвящена сборке версии для MacOS. SQLite3 не выдает ошибок, поэтому я был сбит с толку, почему идентичная библиотека вдруг не работает.   -  person Mknsri    schedule 11.12.2015


Ответы (1)


Обе библиотеки выдали предупреждение о том, что «macosx» не найден на поддерживаемых платформах. Когда я добавил его в настройки проекта json11, сборка скомпилировалась, и оба предупреждения исчезли.

SQlite3 по-прежнему имеет только iOS (iphone, iphonesimulator), но компилируется нормально. Интересно, в чем разница?

person Mknsri    schedule 10.12.2015