CMake中的目录
常见目录所代表的含义
PROJECT_SOURCE_DIR:工程的根目录
PROJECT_BINARY_DIR:运行cmake命令的目录,通常为${PROJECT_SOURCE_DIR}/build
PROJECT_NAME:返回通过 project 命令定义的项目名称
CMAKE_CURRENT_SOURCE_DIR:当前处理的 CMakeLists.txt 所在的路径
CMAKE_CURRENT_BINARY_DIR:target 编译目录
CMAKE_CURRENT_LIST_DIR:CMakeLists.txt 的完整路径
EXECUTABLE_OUTPUT_PATH:重新定义目标二进制可执行文件的存放位置
LIBRARY_OUTPUT_PATH:重新定义目标链接库文件的存放位置
安装到标准位置
CMAKE_INSTALL_BINDIR:定义用户可执行文件所在目录,即所选安装目录下的bin文件夹;
CMAKE_INSTALL_LIBDIR:定义(动态库和静态库)所在的子目录。在64位系统上是lib64,在32位系统是lib;
CMAKE_INSTALL_INCLUDE:C文件头文件所在的子目录,变量为include;
RPATH是什么
将hello-world_wDSO
可执行文件链接到libmessage.so.1
,这意味着在执行时,将加载动态库。因此有关库位置的信息需要在某个地方进行编码,以便加载程序能够成功的完成其工作。库的定位有两种方法:
- 通过设置环境变量通知链接器,GNU/Linux上,需要将路径添加到
LD_LIBRARY_PATH
环境变量中,可能污染,或冲突; - 可以编码到可执行文件中,使用RPATH设置可执行文件运行时的搜索路径;
Cmake CookBook中10.1安装项目讲解
- 项目主要包括了三个CmakeLists.txt文件,我们主要关注的是主的和src文件夹下的;
- 主CmakeLists.txt中的内容:项目基本设置、构建好的target的构建目录、构建好的target的安装目录;
- src文件架下的内容包括:库实现文件,main函数;
- src文件夹下的CMakeLists.txt中的内容包括:依赖项的处理;定义动态库;添加可执行文件;
- rpath的定义:可执行文件会依赖动态库,通过设置rpath来进行搜索;