如何在cmake的构建上OSX上添加一个rpath的一个可执行文件(不安装)?(How do you

2019-08-03 09:23发布

所以,如果你已经有了一个二进制文件,你可以在rpath的OSX上使用“install_name_tool”,像这样添加到它:

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)

Answer 1:

您可以使用POST_BUILD命令到添加LC_RPATH load命令生成的可执行:

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

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



文章来源: How do you add an rpath to an executable in cmake on build (not install) on OSX?
标签: macos cmake