install()
安装文件或者目录(包括库文件)
《本质上就是将指定的文件或者目录复制到指定的目录下》
利用GUNInstallDirs目录变量指定安装目录
可以看模块模块部分的GNUInstallDirs
install的具体使用过程--make insatll
1,如果是在CMakeLists.txt中生成的可执行文件或者库文件,则install的第一个参数使用TARGETS:
install之前,你必须使用add_library或者add_exectuable生成库文件或者可执行文件,否则:
cmake_minimum_required(VERSION 3.9.0)
project(pro_install)
file(GLOB_RECURSE src
${CMAKE_SOURCE_DIR}/*.cpp)
set(LIBRARY_OUTPUT_PATH .)
#add_library(test SHARED ${src})
include(GNUInstallDirs)
message(STATUS "CMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}")
install(TARGETS test
LIBRARY DESTINATION {CMAKE_INSTALL_LIBDIR}
)
install(FILES test.cpp DESTINATION ../dir)
2,如果是安装已经存在的可执行文件或者库文件,install的第一个参数则使用FILES。
2,cmake ..构建----make编译之后
完成make编译之后install并没有安装,需要再执行make install之后,需要安装的文件才会执行安装。
看模块GNUInstallDirs部分
GNUInstallDirs( GNUInstallDirs.cmake)---GNU安装目录
GNUInstallDirs 是一个 CMake 模块,它定义了一组由“GNU 编码标准”定义的,跨平台的标准安装目录变量,可在 CMakeLists.txt 文件中使用。这些目录名称涵盖了程序中用到的各种文件类型和安装位置。通过使用 GNUInstallDirs 模块,可以让编译脚本更加可移植。
GNUInstallDirs 定义了许多有用的 CMake 变量,如:
- `CMAKE_INSTALL_PREFIX`:安装前缀(默认值为 `/usr/local`)。
- `CMAKE_INSTALL_LIBDIR`:安装库文件的目录名称(默认值为 `lib`)。
- `CMAKE_INSTALL_INCLUDEDIR`:头文件目录名称(默认值为 `include`)。
- `CMAKE_INSTALL_DATADIR`:SHARE目录名称(默认值为 `share`)。
- `CMAKE_INSTALL_SYSCONFDIR`:系统配置文件目录名称(默认值为 `/etc`)。
- `CMAKE_INSTALL_BINDIR`:可执行文件目录名称(默认值为 `bin`)。
派生变量 `CMAKE_INSTALL_FULL_XXX` 会将目录名称连接到安装前缀和根目录。例如,`CMAKE_INSTALL_FULL_INCLUDEDIR` 将返回实际的头文件目录(例如 `/usr/local/include`)。
GNUInstallDirs 还包括适用于 Windows 和 macOS 的特殊目录(例如 `CMAKE_INSTALL_APPBUNDLEDIRECTORY` 和 `
GNUInstallDirs中的安装目录默认都是在变量CMAKE_INSTALL_PREFIX中设置的前缀路径下找到其他变量的路径,比如:
CMAKE_INSTALL_LIBDIR的值是lib,那么CMAKE_INSTALL_LIBDIR变量的绝对路径就是:
CMAKE_INSTALL_PREFIX+lib
CMAKE_INSTALL_PREFIX默认值是/usr/local,所以CMAKE_INSTALL_LIBDIR的默认路径就是:
/usr/local/lib
而要在这些系统目录下安装install文件,需要install中设置权限,否则:
设置安装目录前缀--CMAKE_INSTALL_PREFIX
作用
1,指定安装目录前缀
所有其他GNUInstallDirs变量指定的目录路径的前缀,其他目录都需要加上这个前缀目录,这个是一个绝对路径,其他变量的路径只是相对于这个路径下的相对路径。
cmake_minimum_required(VERSION 3.9.0)
project(pro_install)
file(GLOB_RECURSE src
${CMAKE_SOURCE_DIR}/*.cpp)
set(LIBRARY_OUTPUT_PATH .)
add_library(test SHARED ${src})
include(GNUInstallDirs)
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install)
message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
message(STATUS "CMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}")
install(TARGETS test
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(FILES test.cpp DESTINATION ${CMAKE_SOURCE_DIR}/dir)
什么是安装目录
安装目录是指将软件安装到计算机文件系统中的特定文件夹或目录。安装目录包括可执行文件所在的文件夹、库文件所在的文件夹以及其他必要的文件和目录,例如配置文件、帮助文档、示例文件等。
安装目录通常是在软件发布时和使用文件管理工具或安装程序进行设置的。具体来说,当用户安装软件时,安装程序会将该软件的文件和组件安装到特定的安装路径中。
《就是某些特定的文件需要放入的目录》
安装目录的变量用来干什么
我们可以给GNUInstallDirs中的变量赋值,也就是给这些已经定义好的变量指定我们需要指定的安装目录的路径:
#使用GNUInstallDirs中的变量之前,必须先加载这个模块。
#加载模块
include(GNUInstallDirs)
#使用目录变量---给目录变量指定路径
#这里指定安装目录的前缀
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install)
make install
在CMakeLists.txt中配置install之后,构建项目之后,不要忘记执行make install执行安装自己配置的安装,因为cmake ..不会进行安装,只有执行make install之后才会进行安装自己配置的安装。