/ / Як створити .app з відносним шляхом до .dylib? - macos, cmake

Як створити .app з відносним шляхом до .dilib? - macos, cmake

В даний час за допомогою target_link_libraries я пов'язуюсь з деякими бібліотеками, включаючи qt, glew та assimp 3.0

в cmake я дзвоню find (який викликає assimp-config), а потім використовую return ASSIMP_LIBRARIES змінної та передайте її до target_link_libraries, і все добре, крім шляху до засвоєння dylib всередині мого .app є абсолютним, коли всі інші шляхи відносні до @executable і вказують на .app/Content/Frameworks/ папки, щоб я міг призначити свій додаток.

поки що я не можу бачити, в чому різниця, яка мені потрібна між glow (наприклад) та assimp, але коли я перевіряю залежності otool -L Я бачу, що все, що я роблю засвоюю, пов'язує абсолютний шлях, і моє застосування не може знайти цей диліб всередині Frameworks

як забезпечити, щоб шлях зв’язування моєї програми з цією бібліотекою був відносним у пакеті додатків?

Відповіді:

3 для відповіді № 1

Використовуйте a POST_BUILD спеціальна команда для виправлення залежної назви встановленої спільної бібліотеки за допомогою install_name_tool інструмент командного рядка, наприклад:

add_custom_command (TARGET myAppExecutable
POST_BUILD COMMAND "${CMAKE_INSTALL_NAME_TOOL}"
"-change" "/usr/local/lib/libassimp.dylib" "@executable_path/../Frameworks/libassimp.dylib"
"$<TARGET_FILE:myAppExecutable>" VERBATIM)