因此,如果您已经有二进制文件,可以使用'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中做到这一点)
答案 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
可执行文件的路径。