Я всегда запускаю свой исполняемый файл в дереве сборки (я не запускаю его из cmake «install»). Библиотека, давайте назовем его fruit
, построен в качестве основы:Добавление элемента rpath в созданный файл сгенерированного исполняемого файла
add_library(fruit SHARED ${FRUIT_SOURCES})
set_target_properties(fruit PROPERTIES FRAMEWORK TRUE)
set_target_properties(fruit PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_NAME_DIR "@rpath/Frameworks" )
Теперь я хочу, чтобы установить пользовательскую RPATH для основного приложения (называемого executable
) с CMake. Я думал, что я мог бы использовать INSTALL_RPATH
целевого свойство executable
определить мои rpaths для сгенерированной программы, но это, кажется, работает только для установленного исполняемого (помните, я всегда бег моего приложения в папке CMake сборки):
# this rpath is not shown in the generated executable (otool -l -v executable):
set_target_properties(executable PROPERTIES INSTALL_RPATH "@executable_path/lib/")
Как определить/добавить элемент rpath в программу, сгенерированную в дереве сборки?
PS. Эта библиотека fruit
является всего лишь примером моей реальной проблемы. Библиотека создается в проекте sub cmake (подмодуль git), который добавляет свойство BUILD_WITH_INSTALL_RPATH
в библиотеку. Но у меня есть возможность изменить код для этого проекта. Есть ли лучший способ позволить моей исполняемой работе в дереве сборки?