CMake在默认情况下是会给你的exe加入相关RPATH的,这个时候可能会有不想要相关RPATH的需求,仔细查阅寻找之后发现,CMake里面维护了3个比较重要的RPATH变量,即: CMAKE_SKIP_RPATH CMAKE_SKIP_BUILD_RPATH CMKAE_INSTALL_RPATH set(CMAKE_SKIP_RPATH TRUE) set(CMAKE_SKIP_BUILD_RPATH TRUE) set(CMAKE_SKIP_INSTALL...
CMake为了方便用户的安装,默认在make install之后会自动remove删除掉相关的RPATH,这个时候你再去查看exe的RPATH,已经发现没有这个字段了。 因此,当每次make install之后,我们进入到安装路径下执行相关exe的时候,就会发现此时的exe已经找不到相关的库路径了,因为它的RPATH已经被CMake给去除了。 如何让CMake能够在install...
CMAKE_BUILD_WITH_INSTALL_RPATH,CMAKE_SKIP_BUILD_RAPTH,CMAKE_SKIP_INSTALL_RPATH的话,默认CMake在帮你编译之后,如果你使用了相关动态库,它会在相应的executable中增加你相关生成动态库的路径,这样当你每次去执行的时候你不需要每次都LD_LIBRARY_PATH就可以正常运行。
CMAKE_SKIP_RPATH: 如果为真,将不添加运行时路径信息。默认情况下是如果平台支持运行时信息,将会添加运行时信息到可执行程序当中。这样从构建树中运行程序将很容易。为了在安装过程中忽略掉RPATH,使用CMAKE_SKIP_INSTALL_RPATH。 CMAKE_GENERATOR: 构建工程的产生器。它将产生构建文件 (e.g. "Unix Makefiles", ...
再谈CMake与RPATH 之前写过一篇<探讨CMake中关于RPATH的使用>,只要针对的方面是在编译生成之后(不包括安装的make install)如何去除RPATH的问题。今天给大家主要介绍一下如何让CMake在用install命令之后如何保持RPATH。 我先来简单介绍下CMake关于RPATH的机制,在之前文章中介绍过,如果你没有显示指定CMAKE_SKIP_RPATH,...
设置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字段的信息...
3. `CMAKE_INSTALL_PREFIX`:这个参数用于指定安装目录的路径。 4. `CMAKE_MAKE_PROGRAM`:这个参数用于指定make工具的路径。 5. `CMAKE_VERBOSE_FLAG`:这个参数用于开启CMake的详细输出,帮助开发者更好地理解构建过程。 6. `CMAKE_SKIP_RPATH`:这个参数用于决定是否跳过链接器的RPATH处理。 7. `CMAKE_TRY_...
cmake .. -DCMAKE_SKIP_RPATH=TRUE 第二个和第三个变量也比较简单,就是分别在构建期间和安装期间不允许CMake给你加入相关RPATH cmake .. -DCMAKE_SKIP_BUILD_RPATH=TRUEcmake ..-DCMAKE_SKIP_INSTALL_RPATH=TRUE 当然了,如果你之后想要追加RPATH,只需要对这三个变量设置成FALSE就可以了。
9. CMAKE_SKIP_RPATH:是否跳过设置RPATH,默认是关闭的。可以通过设置该参数为ON来跳过设置RPATH,方便在不同环境中运行。 10. CMAKE_MODULE_PATH:指定模块文件的搜索路径。可以通过添加路径来增加模块文件的搜索路径。 以上是一些常用的CMake编译参数,通过设置这些参数可以灵活地指导项目的构建过程。当然,不同的项目可...
对于第一个变量CMAKE_SKIP_RPATH,简单的来说,就是强制CMake不在构建期间和安装install期间给你加上它所认为的RPATH.即cmake . -DCMAKE_SKIP_RPATH=TRUE 第二个和第三个变量也比较简单,就是分别在构建期间和安装期间不允许CMake给你加入相关RPATHcmake . -DCMAKE_SKIP_BUILD_RPATH=TRUEcmake . -DCMAKE_...