CMake 速查
编写 CMakeLists.txt
假如有一个项目如下:
MyProject/
├── CMakeLists.txt
├── src/
│ ├── main.cpp
│ └── mylib.cpp
└── include/
└── mylib.h
#include <iostream>
#include "math_utils.h"
int main() {
int x = 10;
int y = 5;
// 调用 add 函数
std::cout << "Sum: " << add(x, y) << std::endl;
// 调用 subtract 函数
std::cout << "Difference: " << subtract(x, y) << std::endl;
return 0;
}
#include "math_utils.h"
// 实现 add 函数
int add(int a, int b) {
return a + b;
}
// 实现 subtract 函数
int subtract(int a, int b) {
return a - b;
}
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
// 函数声明
int add(int a, int b);
int subtract(int a, int b);
#endif // MATH_UTILS_H
- CMakeLists.txt:CMake 配置文件。
cmake_minimum_required(VERSION 3.10)
# 指定最低 CMake 版本为 3.10。
project(MyProject VERSION 1.0)
# 定义项目名称为 MyProject,版本为 1.0。
# 设置 C++ 标准为 C++11
set(CMAKE_CXX_STANDARD 11)
# 设置 C++ 标准要求
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 指定头文件目录。
include_directories(${PROJECT_SOURCE_DIR}/include)
# 添加源文件
add_library(MyLib src/mylib.cpp)
# 创建一个名为 MyLib 的库,源文件是 mylib.cpp
add_executable(MyExecutable src/main.cpp)
# 创建一个名为 MyExecutable 的可执行文件,源文件是 main.cpp。
# 将 MyLib 库链接到 MyExecutable 可执行文件
target_link_libraries(MyExecutable MyLib)
编译项目
cmake .
# cmake 后的位置是 CMakeLists.txt 所在的目录。而此条命令所在的位置则是 Nakefile 所在的目录。
make