如何使用.dylib的相对路径创建.app?

时间:2015-11-24 19:33:00

标签: macos cmake

目前正在使用target_link_libraries我链接了一些库,包括qt,glew和assimp 3.0

在cmake中我调用find(调用assimp-config),然后使用返回的ASSIMP_LIBRARIES变量并将其传递给target_link_libraries,一切都很好,除了我的.app内的assimp dylib的路径是绝对的所有其他路径都相对于@executable并指向.app/Content/Frameworks/文件夹,因此我可以分发我的应用程序。

到目前为止,我无法看到我在glew(例如)和assimp之间需要的区别,但当我检查依赖于otool -L时,我可以看到无论我做什么assimp都链接到绝对路径并且我的应用程序无法在Frameworks

中找到此dylib

如何确保我的应用程序与该库的链接路径在应用程序包中是相对的?

1 个答案:

答案 0 :(得分:3)

使用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)