活动介绍

cmake 学习笔记(一) - 1+1=10 - 博客频道 - CSDN1

preview
需积分: 0 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++项目。
身份认证 购VIP最低享 7 折!
30元优惠券