请详细说明cmake中的install()。以及使用示例
时间: 2024-03-19 19:44:38 浏览: 89
在 CMake 中,`install()` 命令用于安装目标文件或者其它文件到指定的目录中,使其可以在系统中被访问和使用。该命令的语法如下:
```cmake
install(TARGETS target
EXPORT export_name
DESTINATION destination
[COMPONENT component]
[CONFIGURATIONS [Debug|Release|...]]
[INCLUDES include_dir]
[PERMISSIONS permissions...]
[OPTIONAL]
[FILES_MATCHING]
[REGEX regex])
install(FILES files...
DESTINATION destination
[PERMISSIONS permissions...]
[CONFIGURATIONS [Debug|Release|...]]
[COMPONENT component]
[RENAME name]
[OPTIONAL]
[FILES_MATCHING]
[REGEX regex])
install(DIRECTORY dirs...
DESTINATION destination
[FILE_PERMISSIONS permissions...]
[DIRECTORY_PERMISSIONS permissions...]
[USE_SOURCE_PERMISSIONS]
[CONFIGURATIONS [Debug|Release|...]]
[COMPONENT component]
[OPTIONAL]
[PATTERN pattern [EXCLUDE|PERMISSIONS permissions...]]
[...])
install(EXPORT export_name
DESTINATION destination
[...])
```
其中,`TARGETS` 选项用于安装一个目标文件,`FILES` 选项用于安装一组文件,`DIRECTORY` 选项用于安装一个目录。`EXPORT` 选项用于将 CMake 中定义的一个或多个目标导出,以便在其它项目中可以使用。
下面是一个 `install()` 命令的示例:
```cmake
# 定义一个库
add_library(mylib SHARED mylib.cpp)
# 安装库
install(TARGETS mylib
EXPORT mylib-targets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include/mylib)
# 安装头文件
install(FILES mylib.h DESTINATION include/mylib)
# 导出目标
install(EXPORT mylib-targets
FILE mylib-targets.cmake
DESTINATION lib/cmake/mylib
NAMESPACE mylib::)
```
上述示例中,我们定义了一个名为 `mylib` 的库,并使用 `install()` 命令将其安装到系统中。其中,`EXPORT` 选项将库的信息导出到名为 `mylib-targets.cmake` 的文件中,以便在其它项目中可以使用。`LIBRARY`、`ARCHIVE` 和 `RUNTIME` 选项指定了库文件的安装位置,而 `INCLUDES` 选项则指定了头文件的安装位置。最后,我们使用 `install(EXPORT)` 命令将导出的信息安装到指定的目录中。
需要注意的是,在使用 `install()` 命令时,需要将其放置在 `CMakeLists.txt` 文件中的最后面,以确保所有定义都已经被处理完毕。
阅读全文