一个简单的示例,展示了如何为一个包含单个可执行文件和一个静态库的项目配置CMake构建系统。
项目结构
假设有以下项目结构:
MyProject/
├── CMakeLists.txt
├── src/
│ └── main.cpp
└── lib/
└── math_utils.cpp
└── math_utils.hpp
CMakeLists.txt内容
在项目的根目录下创建`CMakeLists.txt`文件,并填写以下内容:
cmake
cmake_minimum_required(VERSION 3.21)
project(MyProject)
# 设置变量指向源代码和头文件目录
set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(HEADERS_DIR ${SOURCE_DIR}/src)
set(LIBS_DIR ${SOURCE_DIR}/lib)
# 添加源文件到变量中
aux_source_directory(src SRC_LIST)
aux_source_directory(lib LIB_LIST)
# 创建可执行文件
add_executable(my_program ${SRC_LIST})
# 创建静态库
add_library(math_utils STATIC ${LIB_LIST})
# 将静态库链接到可执行文件
target_link_libraries(my_program math_utils)
构建说明
cmake_minimum_required
指定了CMake的最小版本要求,以确保兼容性。project
定义了项目名称。set
指令用于设置项目相关的变量,指向源代码和头文件目录。aux_source_directory
命令递归地查找指定目录下的源文件,并将它们添加到列表变量中。add_executable
和add_library
分别用于创建可执行文件和静态库,并指定它们的源文件列表。target_link_libraries
用于将静态库链接到可执行文件。
编译项目
在终端中,进入项目的根目录,创建一个名为build
的目录,并在该目录中运行CMake来配置项目:
mkdir build
cd build
cmake ..
之后,运行make
来编译项目:
make
编译完成后,可执行文件my_program
将位于build
目录下,您可以通过以下命令运行它:
./my_program