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
目录,可以使用以下代码: