如何在OSX上的构建(不安装)的cmake中为可执行文件添加rpath?

时间:2012-12-01 03:19:48

标签: macos cmake

因此,如果您已经有二进制文件,可以使用'install_name_tool'在OSX上添加一个rpath,如下所示:

install_name_tool -add_rpath @executable_path/blah

xcode会在您构建应用程序包时自动执行此操作。

我知道在cmake中你可以用它来设置共享库的install_name:

set_target_properties(nshared PROPERTIES BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "@rpath")

我的问题是,在二进制文件中添加rpath相当于什么?

(为什么你会这样做?)在你的应用程序/文件夹中查看任何应用程序上的otool -l,你会看到很多应用程序包含以下条目:

Load command 15
          cmd LC_RPATH
      cmdsize 36
         path @executable_path/../../Frameworks/

这是标准做法。我只是想在cmake中做到这一点)

1 个答案:

答案 0 :(得分:12)

您可以使用POST_BUILD command向构建的可执行文件添加LC_RPATH加载命令:

add_custom_command(TARGET executable 
    POST_BUILD COMMAND 
    ${CMAKE_INSTALL_NAME_TOOL} -add_rpath "@executable_path/../../Frameworks/"
    $<TARGET_FILE:executable>)

变量CMAKE_INSTALL_NAME_TOOL包含Darwin下install_name_tool可执行文件的路径。