CMake中的输出路径设置:从当前目录到安装拷贝

作者: 渣渣辉 2024.04.01 17:28 浏览量: 2

简介: 本文介绍了CMake中如何设置输出路径,包括当前目录和安装拷贝,帮助开发者构建和部署项目。

CMake是一个强大的跨平台构建系统,它允许 开发者 使用统一的CMakeLists.txt文件来描述项目的构建过程,而不必关心底层的构建细节。在CMake中,设置输出路径是一个常见的需求,它可以帮助我们控制编译生成的文件和库存放在哪里,以及如何将它们安装到目标系统上。

一、设置当前目录输出

在CMake中,默认情况下,编译生成的文件(如目标文件、可执行文件等)会放在构建目录(通常是项目根目录下的 build out 目录)中。如果你希望改变这些文件的输出路径,可以使用 set 命令来设置 CMAKE_RUNTIME_OUTPUT_DIRECTORY CMAKE_LIBRARY_OUTPUT_DIRECTORY CMAKE_ARCHIVE_OUTPUT_DIRECTORY 变量。

例如,如果你想将可执行文件输出到 bin 目录,将库文件输出到 lib 目录,将静态库文件输出到 static_lib 目录,可以在CMakeLists.txt文件中添加以下代码:

  1. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
  2. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
  3. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/static_lib)

这样,构建生成的文件就会按照指定的路径存放。

二、安装拷贝

除了设置当前目录输出外,CMake还提供了安装拷贝的功能,即将构建生成的文件和库安装到目标系统的指定路径中。这通常是通过 install() 命令来实现的。

install() 命令有多个参数,其中最常用的是 FILES PROGRAMS LIBRARIES DIRECTORY 。通过这些参数,你可以指定要安装的文件、程序、库和目录,以及它们的安装路径。

例如,如果你想将可执行文件 my_program 安装到 /usr/local/bin 目录,将库文件 my_library.so 安装到 /usr/local/lib 目录,可以将以下代码添加到CMakeLists.txt文件中:

  1. install(PROGRAMS my_program DESTINATION bin)
  2. install(LIBRARIES my_library.so DESTINATION lib)

此外,你还可以使用 DIRECTORY 参数来安装整个目录。例如,如果你想将 include 目录中的所有头文件安装到 /usr/local/include 目录,可以使用以下代码: