因此,如果您已经有二进制文件,可以使用'install_name_tool'在OSX上添加一个rpath,如下所示:
install_name_tool -add_rpath @executable_path/blah
Run Code Online (Sandbox Code Playgroud)
当您构建应用程序包时,xcode会自动执行此操作.
我知道在cmake中你可以使用它来设置共享库的install_name:
set_target_properties(nshared PROPERTIES BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "@rpath")
Run Code Online (Sandbox Code Playgroud)
我的问题是,为二进制文件添加rpath相当于什么呢?
(对于'为什么你会这样做?',在你的应用程序/文件夹中的任何应用程序上查看otool -l,你会看到很多应用程序的条目如下:
Load command 15
cmd LC_RPATH
cmdsize 36
path @executable_path/../../Frameworks/
Run Code Online (Sandbox Code Playgroud)
这是标准做法.我只是想在cmake中做到这一点)
sak*_*kra 13
您可以使用POST_BUILD命令将LC_RPATH
加载命令添加到构建的可执行文件:
add_custom_command(TARGET executable
POST_BUILD COMMAND
${CMAKE_INSTALL_NAME_TOOL} -add_rpath "@executable_path/../../Frameworks/"
$<TARGET_FILE:executable>)
Run Code Online (Sandbox Code Playgroud)
该变量CMAKE_INSTALL_NAME_TOOL
包含install_name_tool
Darwin下可执行文件的路径.
归档时间: |
|
查看次数: |
8120 次 |
最近记录: |