简介:本文介绍了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文件中添加以下代码:
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
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文件中:
install(PROGRAMS my_program DESTINATION bin)
install(LIBRARIES my_library.so DESTINATION lib)
此外,你还可以使用DIRECTORY
参数来安装整个目录。例如,如果你想将include
目录中的所有头文件安装到/usr/local/include
目录,可以使用以下代码:
install(DIRECTORY include/ DESTINATION include)
注意,在指定安装路径时,通常使用相对路径,并以DESTINATION
作为关键字。这样,CMake会自动将相对路径转换为目标系统的实际路径。
通过合理设置输出路径和安装拷贝,你可以更好地控制CMake项目的构建和部署过程,使其更符合你的需求。希望本文对你有所帮助!