CMake详细指南:从入门到精通

1星 需积分: 50 64 下载量 184 浏览量 更新于2024-09-08 收藏 742KB PDF 举报
"cmake 规则终结 (中文版)" CMake是一种跨平台的构建系统,用于管理软件项目的构建过程。它通过读取源代码目录下的CMakeLists.txt文件来生成适合各种编译器的Makefile或者项目文件,简化了多平台编译的复杂性。这份资料详细介绍了CMake的规则和语法,旨在帮助用户更好地理解和运用CMake。 **CMake语法简介** CMake的语法简洁明了,主要特点包括: 1. **CMakeLists.txt文件**:每个源码目录下都有一个CMakeLists.txt文件,用于定义构建规则。 2. **不区分大小写**:CMake的语句对大小写不敏感,且不需要行结束符号,注释以`#`开始。 3. **编程语言特性**:CMake实际上是一种简单的编程语言,能够根据CMakeLists.txt自动生成Makefile或其他构建文件。 4. **易用性**:相比Autotools,CMake更为简单和直观。 **CMake语法规则** 1. **变量引用**:使用`${}`来获取变量值,但在`IF`语句中可以直接使用变量名。如: ```cmake MESSAGE(STATUS "This is bindir" ${PROJECT_BINARY_DIR}) MESSAGE(STATUS "This is bindir" $(PROJECT_BINARY_DIR)) # 等效于上面的语句 ``` 2. **指令参数**:指令通常由参数组成,参数间可以使用空格或分号分隔,如: ```cmake SET(SRC_LIST main.cpp hello.cpp) SET(SRC_LIST "main.cpp" "hello.cpp") SET(SRC_LIST "main.cpp"; "hello.cpp") # 分号也可以作为分隔符 ``` 3. **构建模式**:CMake支持两种构建模式——内部构建(In-source)和外部构建(Out-of-source): - **内部构建**:编译过程产生的文件与源码文件在同一目录下,即在工程目录下运行`cmake`。 - **外部构建**:将编译目录与源码目录分开,即在非工程目录下运行`cmake`。 **常用变量及指令** CMake提供了许多内置变量和指令,方便管理构建过程,例如: 1. **项目目录变量**: - `PROJECT_BINARY_DIR` 和 `PROJECT_SOURCE_DIR`:分别表示工程的目标文件目录和源文件目录。 - `CMAKE_BINARY_DIR` 和 `CMAKE_SOURCE_DIR`:与上面类似,但针对CMake自身的执行环境。 2. **当前处理路径**: - `CMAKE_CURRENT_BINARY_DIR`:当前处理的CMakeLists.txt所在的构建目录路径。 - `CMAKE_CURRENT_SOURCE_DIR`:对应的源代码目录路径。 3. **文件信息**: - `CMAKE_CURRENT_LIST_FILE`:输出调用此变量时所在的CMakeLists.txt文件路径。 - `CMAKE_CURRENT_LIST_LINE`:当前行号。 4. **项目相关变量**: - `<projectname>_BINARY_DIR` 和 `<projectname>_SOURCE_DIR`:分别对应特定项目的目标文件和源文件目录。 5. **二进制输出路径**: - `EXECUTABLE_OUTPUT_PATH`:设置最终生成的可执行文件的默认输出目录。 此外,CMake还提供了诸如`ADD_EXECUTABLE`、`ADD_LIBRARY`、`INCLUDE_DIRECTORIES`、`TARGET_LINK_LIBRARIES`等指令,用于创建目标、指定库依赖、添加包含目录等操作。学习和熟练掌握这些指令,可以高效地管理和构建项目。 CMake是构建多平台软件项目的重要工具,通过学习其规则和语法,开发者可以有效地自动化构建过程,减少手动配置的工作量。这份“cmake 规则终结 (中文版)”资料正是为了帮助读者掌握这一强大的工具。