背景
cmake不仅可以构建可执行文件,还可以安装。使用CMake,我们可以使用install()
命令指定安装规则。只需要指定安装位置和待安装的目标文件,十分简单。
以cmake官方教程为例(3.24版本,Step4:https://cmake.org/cmake/help/v3.24/guide/tutorial/Installing%20and%20Testing.html
)
可以分为2步:1.在CMakeLists.txt文件中加入install命令;2.使用cmake指令指定安装位置
在CMakeLists.txt文件中加入install命令
首先在子路径下的CMakeLists.txt文件中加入:
install(TARGETS MathFunctions DESTINATION lib)
install(FILES MathFunctions.h DESTINATION include)
这两行的作用是将MathFunctions
安装到lib
路径下,将MathFunction.h
安装到include
路径下。
然后在根路径下的CMakeLists.txt文件中加入:
install(TARGETS Tutorial DESTINATION bin)
install(FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h"
DESTINATION include
)
这两行的作用是将Tutorial
安装到bin
路径下,将TutorialConfig.h
安装到include
路径下。
从CMakeLists.txt的前文可知,Tutorial是可执行文件,MathFunctions是库文件,TutorialConfig.h和MathFunction.h是头文件,因此分别安装到bin目录、lib目录和include目录,符合通常规则。
使用cmake指令指定安装位置
如教程中所说,首先使用cmake命令,构建cmake项目。然后可以选择官方安装方式,使用cmake --install .
命令安装,命令中可以设定prefix
,以指定安装位置。
如果是之前的cmake版本,cmake不支持install
选项的话,可以使用make install
代替。
PS:怎么指定安装路径的各种方法
方法1:修改cmake文件。在cmake文件中加入set(CMAKE_INSTALL_PREFIX "../install")
。
方法2:修改cmake命令参数。cmake -DCMAKE_INSTALL_PREFIX="../install"
。
方法3:使用ccmake调整CMAKE_INSTALL_PREFIX。
方法4(不推荐):使用make命令参数。make DESTDIR=absolute/path install
。
总结
文末总结了各种指定安装路径的方法,当不想把文件安装到默认位置的时候,可以参考。