CMake是一种跨平台的开源软件工具,它能够自动化构建、测试和打包应用程序,并支持多种操作系统、编译器和生成器。它的语法简单,易于学习,可帮助开发人员将项目构建过程简化到极致。在本文中,我们将深入了解CMake语法并学习构建我们自己的项目。
安装CMake
在开始学习CMake之前,我们需要安装CMake。CMake提供了官方的二进制文件和源代码,可以在其官网(https://cmake.org/download/)上下载。
使用CMake创建项目
我们将使用CMake构建一个简单的项目。我们的项目包含一个源文件main.c和一个头文件hello.h。先创建一个文件夹,命名为CMakeTutorial,并在其中创建两个文件:main.c和hello.h。添加以下代码:
main.c
```
#include "hello.h"
#include
int main(int argc, char **argv) { hello(); printf("Hello World!\n"); return 0; } ```
hello.h
``` void hello(); ```
添加以下内容到CMakeLists.txt:
``` cmake_minimum_required(VERSION 3.5)
project(CMakeTutorial) add_executable(CMakeTutorial main.c) ```
此时,我们的项目已经可以通过CMake进行构建。使用以下命令:
``` mkdir build cd build cmake .. ```
这将在build文件夹中生成Makefile文件。使用以下命令构建可执行文件:
``` make ```
在build文件夹中,可以看到一个名为CMakeTutorial的可执行文件。
``` $ ./CMakeTutorial Hello, world! Hello World! ```
CMake语法
上述示例中,使用了一些CMake命令:
* cmake_minimum_required:指定了CMake的最低版本; * project:定义了项目名; * add_executable:指定了要编译的可执行程序名称和源文件列表。
CMake支持许多其他的命令和语法。以下是几个常用的CMake命令:
* add_library:为项目添加库文件; * target_include_directories:指定头文件目录; * target_link_libraries:指定链接库。
例如,如果我们需要添加一个库文件,首先需要将源文件添加到CMakeLists.txt文件中:
``` add_library(CMakeTutorialLib STATIC hello.c) ```
此时,我们需要修改main.c使其包含hello.h,在CMakeLists.txt中也需要添加该头文件的相关路径:
``` include_directories(${PROJECT_SOURCE_DIR}) ```
最后,在add_executable命令中添加我们的库:
``` add_executable(CMakeTutorial main.c) target_link_libraries(CMakeTutorial CMakeTutorialLib) ```
使用以上命令,我们就将CMakeTutorialLib库添加到了CMakeTutorial可执行文件中。
自定义CMake变量
使用变量可以使我们的CMakeLists.txt更加具有灵活性,使得我们能够在命令行或者其他的方式中修改变量,进而改变构建方式和编译选项。可以使用set和option命令来定义变量:
``` set(CMAKE_C_FLAGS "-Wall -Wextra") option(BUILD_SHARED_LIBS "Build shared libraries" OFF) ```
以上示例中,set命令定义了CMAKE_C_FLAGS变量,指定了编译选项;option命令定义了BUILD_SHARED_LIBS变量,默认为OFF,表示不构建共享库。
结论
在本文中,我们介绍了如何使用CMake来构建项目,并且了解了CMake的语法。使用CMake可以使我们的项目构建更加自动化和容易维护,减少了手动编译和构建的时间和错误。希望本文可以帮助您更好地理解CMake语法并构建自己的项目。