【问题标题】:How to create .app with relative path to .dylib?如何使用 .dylib 的相对路径创建 .app?
【发布时间】:2015-11-24 19:33:00
【问题描述】:

目前使用 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 都与绝对路径链接,我的应用程序可以't find this dylib inside Frameworks

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

【问题讨论】:

    标签: macos cmake


    【解决方案1】:

    使用POST_BUILD 命令行工具使用POST_BUILD 自定义命令修复依赖共享库安装名称,例如:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 2022-06-19
      • 2020-03-31
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多