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

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

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

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

一、设置当前目录输出

在CMake中,默认情况下,编译生成的文件(如目标文件、可执行文件等)会放在构建目录(通常是项目根目录下的buildout目录)中。如果你希望改变这些文件的输出路径,可以使用set命令来设置CMAKE_RUNTIME_OUTPUT_DIRECTORYCMAKE_LIBRARY_OUTPUT_DIRECTORYCMAKE_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()命令有多个参数,其中最常用的是FILESPROGRAMSLIBRARIESDIRECTORY。通过这些参数,你可以指定要安装的文件、程序、库和目录,以及它们的安装路径。

例如,如果你想将可执行文件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目录,可以使用以下代码:

  1. install(DIRECTORY include/ DESTINATION include)

注意,在指定安装路径时,通常使用相对路径,并以DESTINATION作为关键字。这样,CMake会自动将相对路径转换为目标系统的实际路径。

通过合理设置输出路径和安装拷贝,你可以更好地控制CMake项目的构建和部署过程,使其更符合你的需求。希望本文对你有所帮助!