CMAKE_INSTALL_PREFIX

我不是女神ヾ 2024-03-30 12:48 118阅读 0赞

一、定义

CMAKE_INSTALL_PREFIX为cmake的内置变量,用于指定cmake执行install命令时,安装的路径前缀。Linux下的默认路径是/usr/local ,Windows下默认路径是 C:/Program Files/${PROJECT_NAME}

二、用法

方法1,在执行cmake时,输入以下命令

  1. cmake -DCMAKE_INSTALL_PREFIX=<你要的安装路径>

方法2,设置变量

  1. SET(CMAKE_INSTALL_PREFIX <你要安装的路径>)

要安装在PROJECT 之后

三、实例

1,新建工程,为工程添加一个子目录 src,用来存储源代码main.c;
2,添加一个子目录 doc,用来存储这个工程的文档 hello.txt
3,在工程目录添加文本文件 COPYRIGHT, README;
4,在工程目录添加一个 runhello.sh 脚本,用来调用 hello 二进制
4,将构建后的目标文件放入构建目录的 bin 子目录;
5,最终安装这些文件:将 hello 二进制与 runhello.sh 安装至//bin,将
doc 目录中的 hello.txt 以及 COPYRIGHT/README 安装到
//share/doc/cmake/t2

目录如下

b409e36e52174201be21892950b99719.png

main.c

  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("Hello World from t1 Main!\n");
  5. return 0;
  6. }

src下的CMakeLists.txt

  1. SET(SRC_LIST main.c)
  2. ADD_EXECUTABLE(hello ${SRC_LIST})

主目录下的 CMakeLists.txt

  1. PROJECT(HELLO)
  2. ADD_SUBDIRECTORY(src bin)
  3. #安装文件
  4. INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/t2)
  5. #安装sh程序
  6. INSTALL(PROGRAMS runhello.sh DESTINATION bin)
  7. 安装目录
  8. 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 要安装到//share/doc/cmake/t2,所以我们不能直接安装整个 doc 目录,这里采用的方式是安装 doc ”目录中的内容,也就是使用 doc/”
在工程文件中添加
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)
6,尝试我们修改的结果:
现在进入 build 目录进行外部编译,注意使用 CMAKE_INSTALL_PREFIX 参数,这里我们
将它安装到了/tmp/t2 目录:

  1. cmake -DCMAKE_INSTALL_PREFIX=/tmp/t2/usr ..

然后运行

  1. make
  2. make install

查看生成的文件

efa4183eca5c450e875f892f9694c492.png

参考:

CMAKE_INSTALL_PREFIX — CMake 3.25.1 Documentation

https://hongjh.blog.csdn.net/article/details/120170219

http://file.ncnynl.com/ros/CMake%20Practice.pdf

发表评论

表情:
评论列表 (有 0 条评论,118人围观)

还没有评论,来说两句吧...

相关阅读