CMAkelists
时间: 2025-01-07 09:36:52 浏览: 55
### CMakeLists.txt 文件概述
CMakeLists.txt 是用于描述 CMake 构建过程和项目配置的文件[^2]。该文件包含一系列命令、变量设置以及流程控制结构,旨在指导 CMake 生成适用于特定平台和编译器的构建系统文件。
#### 创建简单的 CMakeLists.txt 文件
对于初学者而言,可以从一个简易版本入手:
```cmake
# 设置最低支持的 CMake 版本
cmake_minimum_required(VERSION 3.10)
# 定义项目名称及其默认语言
project(MyProject VERSION 1.0 LANGUAGES CXX)
# 添加可执行文件 target 名称为 myapp, 使用 main.cpp 源码文件
add_executable(myapp src/main.cpp)
```
此段代码展示了如何创建最基础的 `CMakeLists.txt` 文件来定义最小化的 C++ 工程[^1]。
#### 配置并生成动态库
当目标是生成共享库而非独立的应用程序时,则需调整上述脚本如下所示:
```cmake
# 设定所需的最低 cmake 版本号
cmake_minimum_required(VERSION 3.10)
# 初始化工程名为 MyLibrary 并指定其主要编程语言为 C++
project(MyLibrary VERSION 1.0 LANGUAGES CXX)
# 将源文件列表赋给变量 SOURCES
set(SOURCES src/hello.cpp)
# 声明要创建的名字叫 hello 的共享库 (即 .so 或者 .dll),并将 SOURCES 中列出的所有 cpp 文件作为输入传递给这个新库
add_library(hello SHARED ${SOURCES})
```
这段脚本不仅指定了项目的元数据,还通过调用 `add_library()` 函数告知 CMake 要构建的是一个共享库而不是应用程序,并且给出了构成该库的具体实现文件路径[^3]。
#### 整合第三方依赖项
如果项目依赖于外部库或其他资源,在 `CMakeLists.txt` 中也需要相应声明这些关系:
```cmake
find_package(MathAPI REQUIRED) # 查找 MathAPI 库的位置;如果没有找到则报错退出
include_directories(${MathAPI_INCLUDE_DIRS}) # 向编译器提供头文件所在目录的信息
target_link_libraries(myapp PRIVATE MathAPI::MathAPI) # 把链接到 mathapi 这个库的任务分配给了 myapp 可执行文件的目标对象
```
这里展示了一个典型场景下引入第三方组件的方式——先利用 `find_package()` 寻址所需库的确切位置,再经由 `include_directories()` 和 `target_link_libraries()` 来完成实际集成工作[^5]。
阅读全文
相关推荐

















