cmake 学习笔记(一) - 1+1=10 - 博客频道 - CSDN1
需积分: 0 94 浏览量
更新于2022-08-03
收藏 375KB PDF 举报
【CMake学习笔记(一)】介绍
CMake是一个跨平台的构建系统,它用于管理项目的构建过程,支持多种编译器和构建工具。在C++领域,许多大型项目如KDE4、Qt4的Python绑定(PySide)以及开源图像处理库OpenCV都采用CMake作为构建系统。随着这些项目的广泛使用,掌握CMake对于C++开发者来说变得至关重要。
在本文中,我们将逐步学习如何使用CMake构建简单的C程序,并逐渐增加复杂性,从而更好地理解CMake的工作原理和使用方法。
**例子一:单个源文件**
我们有一个简单的C程序`main.c`:
```c
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
```
为了构建这个程序,我们需要创建一个名为`CMakeLists.txt`的文件,它是CMake的项目文件:
```cmake
project(HELLO)
set(SRC_LIST main.c)
add_executable(hello ${SRC_LIST})
```
接下来,在一个独立的目录(例如`build`)中运行`cmake`命令,指定`CMakeLists.txt`所在目录,并选择构建工具,例如:
```
cmake .. -G "NMake Makefiles" # 对于Windows上的NMake
cmake .. -G "MinGW Makefiles" # 对于MinGW on Windows
make # 对于Unix-like系统
```
这将生成可执行文件`hello.exe`(或`hello`)。
**CMakeList.txt解析**
- `project(HELLO)`命令定义项目名称,同时设置`HELLO_BINARY_DIR`和`HELLO_SOURCE_DIR`变量。
- `set(SRC_LIST main.c)`设置变量`SRC_LIST`,用于存储源文件列表。
- `add_executable(hello ${SRC_LIST})`指示CMake生成名为`hello`的可执行文件,源文件为`SRC_LIST`中的文件。
**变量与命令**
- 变量名在CMake中是大小写敏感的,如`PROJECT_BINARY_DIR`和`PROJECT_SOURCE_DIR`。
- `message()`命令用于打印变量的值,便于调试。
- `add_executable()`和`add_library()`分别用于创建可执行文件和库文件。
**例子二:多个源文件**
为了增加复杂性,我们可以将代码拆分为`main.c`, `hello.h` 和 `hello.c`。`hello.h`定义了一个函数原型,`hello.c`实现该函数,`main.c`调用这个函数。
`hello.h`:
```c
#ifndef DBZHANG_HELLO_
#define DBZHANG_HELLO_
void hello(const char* name);
#endif // DBZHANG_HELLO_
```
`hello.c`:
```c
#include "hello.h"
void hello(const char* name) {
printf("Hello, %s!\n", name);
}
```
`CMakeLists.txt`需要更新以包含新的源文件:
```cmake
project(HELLO)
set(SRC_LIST main.c hello.c)
add_executable(hello ${SRC_LIST})
```
再次运行`cmake`和`make`,项目将成功构建并链接。
**总结**
通过这些基础示例,我们可以看到CMake是如何管理项目构建的,包括处理源文件、设置目标和管理依赖。随着项目的复杂度增加,CMake的能力也会展现出来,如支持库、链接外部库、条件语句、函数和模块等。学习和熟练使用CMake能够帮助开发者更高效地管理和构建跨平台的C++项目。

型爷
- 粉丝: 25
最新资源
- 中学迁建项目300米田径场工程施工招标文件.doc
- -GB5004-015《混凝土结构工程施工质量验收规范》新规范解读.pptx
- 质量、安全、环境体系内审员讲义ppt.ppt
- 2011年住宅楼施工总承包招标书.doc
- 基于DeepSeek的LLMs:训练框架、推理优化和自适应技术揭秘
- 浦北龙门风电场一期100MW工程220kV升压站土建工程技术文件.doc
- 员工月度总结书.doc
- 电杆上路灯安装质量管理.doc
- 预制钢筋混凝土框架结构构件安装工艺.doc
- 抽样结果记录.docx
- 固定资产报废申请表.doc
- 语文试卷答题纸.doc
- 南京中海地产项目部管理制度.doc
- 绪论-档案学基础.ppt
- 工程危险因素识别评价表(民用建筑部分).doc
- 工程部工作流程图及管理制度.doc