Я хочу связать некоторые динамические библиотеки в своем проекте с помощью scons.
Пример:
источник/main.cpp
инструмент/lib/libboost_system.dylib
Бинарное местоположение
исходник/прогбинарий
Моя проблема в том, что после процесса компоновки бинарник не может найти libboost_system.dylib
dyld: библиотека не загружена: libboost_system.dylib
otool -L
показывает проблему. Я могу исправить это с помощью небольшого скрипта, который исправляет путь. Но я хочу сделать это в scons.
В Linux это очень просто, мне нужно только установить RPATH
в scons.
----- после подсказки от @Brady
Я добавляю Linkflags для моей библиотеки. После привязки я получил ошибку
'g++: ошибка: -install_name разрешено только с -dynamiclib'
Поэтому я добавляю к команде
LINKFLAGS = '-dynamiclib install_name @executable_path/libWhatever.dylib'
И теперь я получаю, если я позвоню своему выполнению сообщения
'не удается выполнить бинарный файл'
И
отул -L
Покажите мне:
@executable_path/tools/lib/libboost_filesystem.dylib (версия совместимости 0.0.0, текущая версия 0.0.0) libboost_system.dylib (версия совместимости 0.0.0, текущая версия 0.0.0)
команда связывания из scons выглядит так:
/opt/local/bin/g++ -o source/prog -dynamiclib -install_name @executable_path/tools/lib/libboost_system.dylib source/main.o -Ltools/lib -lboost_system
-install_name @executable_path/libWhatever.dylib
доld
. Сmake
это потребует установкиLDFLAGS
, однако я не знаю, как это сделать сscons
. - person trojanfoe   schedule 29.10.2013