CMake设置运⾏时链接库路径-rpath问题
为什么现在都用cmake使⽤CMake编译⽣成so或可执⾏⽂件运⾏时,依赖的so必须放到系统⽬录或设置⼀些环境变量,对于在多个环境上部署或切换环境部署,每次运⾏可执⾏⽂件都要预先配置,操作起来⽐较⿇烦。
本⽂针对CMake编译时设置 rpath 的⼀些问题
1 配置相对路径
⾃定义的链接⽬录如果使⽤绝对路径,当库⽂件⽬录发⽣变化时则不到链接的库,采⽤相对路径尝试
set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "-Wl,-rpath,./lib")
配置成功后查看可执⾏⽂件链接路径
可是当在其他⽬录运⾏可执⾏程序时,则不到库⽂件。
因为相对路径将相对于运⾏程序时的当前⼯作⽬录,⽽不是相对于到⼆进制⽂件/库的⽬录,所以使⽤相对路径意义不是很⼤,除⾮在可执⾏⽂件路径下执⾏程序。
2 配置绝对路径
set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS
"-Wl,-rpath,${SDK_LIBS_DIR}:/usr/local/MATLAB/MATLAB_Runtime/v99/bin/glnxa64")
只需要设置好SDK_LIBS_DIR⽬录名称,其他运⾏环境安装在此⽬录下,则可正常⼯作。
注意:在CMake使⽤中,遇到 make install 会清除通过 link_directories() 配置的rpath路径。
所以避免该问题则使⽤set_target_properties配置。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论