CMAKE_INSTALL_PREFIX 我不是女神ヾ 2024-03-30 12:48 46阅读 0赞 #### 一、定义 #### 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 目录如下 ![b409e36e52174201be21892950b99719.png][] 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 查看生成的文件 ![efa4183eca5c450e875f892f9694c492.png][] 参考: [CMAKE\_INSTALL\_PREFIX — CMake 3.25.1 Documentation][CMAKE_INSTALL_PREFIX _ CMake 3.25.1 Documentation] [https://hongjh.blog.csdn.net/article/details/120170219][https_hongjh.blog.csdn.net_article_details_120170219] [http://file.ncnynl.com/ros/CMake%20Practice.pdf][http_file.ncnynl.com_ros_CMake_20Practice.pdf] [b409e36e52174201be21892950b99719.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/30/164bf7806f48490c95ea3a88f1e2e12c.png [efa4183eca5c450e875f892f9694c492.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/30/c6bb78d340c84e9aa9fc75cb11c7808a.png [CMAKE_INSTALL_PREFIX _ CMake 3.25.1 Documentation]: https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html [https_hongjh.blog.csdn.net_article_details_120170219]: https://hongjh.blog.csdn.net/article/details/120170219 [http_file.ncnynl.com_ros_CMake_20Practice.pdf]: http://file.ncnynl.com/ros/CMake%20Practice.pdf
还没有评论,来说两句吧...