一、定义
CMAKE_INSTALL_PREFIX为cmake的内置变量,用于指定cmake执行install命令时,安装的路径前缀。Linux下的默认路径是/usr/local ,Windows下默认路径是 C:/Program Files/${PROJECT_NAME}
二、用法
方法1,在执行cmake时,输入以下命令
cmake -DCMAKE_INSTALL_PREFIX=<你要的安装路径>
方法2,设置变量
SET(CMAKE_INSTALL_PREFIX <你要安装的路径>)
要安装在PROJECT<project_name> 之后
三、实例
1,新建工程,为工程添加一个子目录 src,用来存储源代码main.c;
2,添加一个子目录 doc,用来存储这个工程的文档 hello.txt
3,在工程目录添加文本文件 COPYRIGHT, README;
4,在工程目录添加一个 runhello.sh 脚本,用来调用 hello 二进制
4,将构建后的目标文件放入构建目录的 bin 子目录;
5,最终安装这些文件:将 hello 二进制与 runhello.sh 安装至/<prefix>/bin,将
doc 目录中的 hello.txt 以及 COPYRIGHT/README 安装到
/<prefix>/share/doc/cmake/t2
目录如下
main.c
#include <stdio.h>
int main()
{
printf("Hello World from t1 Main!\n");
return 0;
}
src下的CMakeLists.txt
SET(SRC_LIST main.c)
ADD_EXECUTABLE(hello ${SRC_LIST})
主目录下的 CMakeLists.txt
PROJECT(HELLO)
ADD_SUBDIRECTORY(src bin)
#安装文件
INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/t2)
#安装sh程序
INSTALL(PROGRAMS runhello.sh DESTINATION bin)
安装目录
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)
在工程目录添加 runhello.sh 脚本,内容为:hello
添加工程目录中的 COPYRIGHT 和 README的内容分别为
touch COPYRIGHT
touch README
下面改写各目录的 CMakeLists.txt 文件。
1,安装 COPYRIGHT/README,直接修改主工程文件 CMakelists.txt,加入以下指令:
INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/t2)
2,安装 runhello.sh,直接修改主工程文件 CMakeLists.txt,加入如下指令:
INSTALL(PROGRAMS runhello.sh DESTINATION bin)
3,安装 doc 中的 hello.txt,因为 hello.txt 要安装到/<prefix>/share/doc/cmake/t2,所以我们不能直接安装整个 doc 目录,这里采用的方式是安装 doc ”目录中的内容,也就是使用 doc/”
在工程文件中添加
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)
6,尝试我们修改的结果:
现在进入 build 目录进行外部编译,注意使用 CMAKE_INSTALL_PREFIX 参数,这里我们
将它安装到了/tmp/t2 目录:
cmake -DCMAKE_INSTALL_PREFIX=/tmp/t2/usr ..
然后运行
make
make install
查看生成的文件
参考:
CMAKE_INSTALL_PREFIX — CMake 3.25.1 Documentation
https://hongjh.blog.csdn.net/article/details/120170219
http://file.ncnynl.com/ros/CMake%20Practice.pdf