> For the complete documentation index, see [llms.txt](https://chenxiaowei.gitbook.io/cmake-cookbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chenxiaowei.gitbook.io/cmake-cookbook/7.0-chinese.md).

# 第7章 构建项目

本章的主要内容如下：

* 使用函数和宏重用代码
* 将CMake源代码分成模块
* 编写函数来测试和设置编译器标志
* 用指定参数定义函数或宏
* 重新定义函数和宏
* 使用废弃函数、宏和变量
* add\_subdirectory的限定范围
* 使用target\_sources避免全局变量
* 组织Fortran项目

前几章中，我们已经使用了一些CMake构建块来配置和构建的项目。本章中，我们将讨论如何组合这些构建块，并引入抽象，并最小化代码重复、全局变量、全局状态和显式排序，以免CMakeLists.txt文件过于庞大。目标是为模块化CMake代码结构和限制变量范围提供模式。我们将讨论一些策略，也将帮助我们控制中大型代码项目的CMake代码复杂性。
