В даний час за допомогою 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)