Russian Qt Forum
Ноябрь 22, 2024, 11:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как изменить линковку библиотеки в Link Binary With Libraries (Xcode)  (Прочитано 7513 раз)
Wargos
Новичок

Offline Offline

Сообщений: 5


Просмотр профиля
« : Июнь 23, 2020, 16:04 »

Библиотека добавлена в .pro файл следующими строками
Код:
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/Libraries/release/ -lvclient_iphone_sim_release
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/Libraries/debug/ -lvclient_iphone_sim_release
else:unix: LIBS += -L$$PWD/Libraries/ -lvclient_iphone_sim_release

INCLUDEPATH += $$PWD/Libraries
DEPENDPATH += $$PWD/Libraries

win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/Libraries/release/libvclient_iphone_sim_release.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/Libraries/debug/libvclient_iphone_sim_release.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/Libraries/release/vclient_iphone_sim_release.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/Libraries/debug/vclient_iphone_sim_release.lib
else:unix: PRE_TARGETDEPS += $$PWD/Libraries/libvclient_iphone_sim_release.a

Но после в Xcode вручную нужно менять линковку данной библиотеки в списке. (на фото показано)

ВОПРОС: Можно ли как-то задать порядок линковки библиотеки прямо из .pro файла для генерации в Xcode?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июнь 23, 2020, 16:56 »

скорее всего никак. Но можно написать небольшой скрипт, который будет это делать после генерации проекта, см. https://github.com/CocoaPods/Xcodeproj или https://github.com/tuist/XcodeProj

судя по названию, эта библиотека собрана под симулятор. Если для сборки под симулятор и девайс планируется работать в одном Xcode проекте, то тебе придется либо делать 2 таргета в Xcode либо удалить либу из этого «автоматического» списка и линковать нужную либу руками, передав соответствующий флаг.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Wargos
Новичок

Offline Offline

Сообщений: 5


Просмотр профиля
« Ответ #2 : Июнь 24, 2020, 10:54 »

скорее всего никак. Но можно написать небольшой скрипт, который будет это делать после генерации проекта, см. https://github.com/CocoaPods/Xcodeproj или https://github.com/tuist/XcodeProj

судя по названию, эта библиотека собрана под симулятор. Если для сборки под симулятор и девайс планируется работать в одном Xcode проекте, то тебе придется либо делать 2 таргета в Xcode либо удалить либу из этого «автоматического» списка и линковать нужную либу руками, передав соответствующий флаг.

Вы в самом конце сказали "передав соответствующий флаг". Прошу прощения, а как его использовать? Флаг в .pro файле или обычный bool в .cpp или .qml файле??

Ну или как им пользоваться вообще? =)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Июнь 24, 2020, 12:24 »

флаг линковщика Улыбающийся Либо в .pro либо прямо в Xcode. Для .pro файла будет что-то вроде этого:
Код:
ios-sim {
  LIBS += -lmy_simulator_lib
}
else: ios-device {
  LIBS += -lmy_device_lib
}
ios-sim и ios-device я написал наугад, наверняка эти селекторы как-то по-другому называются. Если эти либы лежат в разных папках, то надо будет также указать разный параметр -L

в Xcode это настраивается через OTHER_LDFLAGS (в Build Settings): там надо нажать плюсик и выбрать Any Simulator SDK и Any iOS SDK, в них вписать такие же флажки как и в .pro
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Wargos
Новичок

Offline Offline

Сообщений: 5


Просмотр профиля
« Ответ #4 : Июнь 24, 2020, 17:34 »

флаг линковщика Улыбающийся Либо в .pro либо прямо в Xcode. Для .pro файла будет что-то вроде этого:
Код:
ios-sim {
  LIBS += -lmy_simulator_lib
}
else: ios-device {
  LIBS += -lmy_device_lib
}
ios-sim и ios-device я написал наугад, наверняка эти селекторы как-то по-другому называются. Если эти либы лежат в разных папках, то надо будет также указать разный параметр -L

в Xcode это настраивается через OTHER_LDFLAGS (в Build Settings): там надо нажать плюсик и выбрать Any Simulator SDK и Any iOS SDK, в них вписать такие же флажки как и в .pro

Спасибо, займусь этим. Если что напишу вам)
Записан
Wargos
Новичок

Offline Offline

Сообщений: 5


Просмотр профиля
« Ответ #5 : Июнь 25, 2020, 18:54 »

Нашел решение!!!

Библиотека которую я использовал конфликтовала с qtlibpng.
Решение состояло в том, что бы в .pro файле дописать в первых 3-х строчках добавления НАШЕЙ библиотеки -qtlibpng

Вышло так:
Код:
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../usr/lib/release/ -lz.1
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../usr/lib/debug/ -lz.1
else:unix: LIBS += -L$$PWD/../../../../usr/lib/ -lz.1

INCLUDEPATH += $$PWD/../../../../usr/lib
DEPENDPATH += $$PWD/../../../../usr/lib

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/Libraries/release/ -lqtlibpng  -lvclient_iphone_sim_release
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/Libraries/debug/ lqtlibpng -lvclient_iphone_sim_release
else:unix: LIBS += -L$$PWD/Libraries/ -lqtlibpng -lvclient_iphone_sim_release

INCLUDEPATH += $$PWD/Libraries
DEPENDPATH += $$PWD/Libraries

win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/Libraries/release/libvclient_iphone_sim_release.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/Libraries/debug/libvclient_iphone_sim_release.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/Libraries/release/vclient_iphone_sim_release.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/Libraries/debug/vclient_iphone_sim_release.lib
else:unix: PRE_TARGETDEPS += $$PWD/Libraries/libvclient_iphone_sim_release.a
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 23.