可以简单的认为RPATH是可执行程序优先查找动态库的位置
大型项目可能需要使可执行程序以指定的相对路径优先查找动态库。这是RPATH的一个重要使用场景
指定编译时的输出位置
设置CMAKE_RUNTIME_OUTPUT_DIRECTORY, 指定可执行文件的编译输出位置
设置CMAKE_LIBRARY_OUTPUT_DIRECTORY, 指定动态库的编译输出位置
为了使RPATH生效
把CMAKE_SKIP_RPATH和CMAKE_SKIP_BUILD_RPATH都设置为False
cmake目前提供的都是控制efl结构的RUNPATH字段. 该字段可以为冒号(:)分割的数组
设置CMAKE_BUILD_RPATH_USE_ORIGIN为True, 作用是更改RUNPATH字段的值中的绝对路径替换为$ORIGIN
设置CMAKE_BUILD_RPATH, 作用是RUNPATH字段的值前追加
如果用cmake控制部署 需要设置CMAKE_SKIP_INSTALL_RPATH和CMAKE_BUILD_WITH_INSTALL_RPATH等
注: 可以只用命令readelf -d xxx命令查看RUNPATH字段的信息