cmake构建和编译

什么是CMake?

CMake本身是一个工具集,由五个可执行的程序组成:cmake、ctest、cpack、cmake-gui和ccmake,其中cmake可以说是出镜率最高的明星级别程序了,它用于在构建项目的第一步,进行项目的配置、生成和构建项目的主要可执行文件的工作。其他的程序们ctest用于运行和报告测试结果的测试驱动程序,cpack用来生成安装程序和源包的打包程序,cmake-gui是 cmake 的图形界面,ccmake(注意ccmake比cmake多了一个c)也是用于图形界面,与cmake-gui不同的地方在于ccmake是基于控制台(terminal)的图形界面。

CMake是如何工作的?

CMake它依赖于系统中的其他工具来执行实际的编译、链接和其他任务。CMake好似一个在构建过程中工作的“协调器”,它清楚哪些步骤需要完成,理解最终目标是什么,以及忙碌于为构建工作找到合适的“工人”和“材料”。综上,这个过程有三个阶段:配置、生成、构建阶段,如下图所示。
cmake构建和编译_第1张图片

CMake应用实例

初学者如何开始使用CMake呢?本文将通过一个个简单的CMake项目,由浅入深地,逐一介绍CMake的一些基本语法、命令和变量。

  project1
      ├── CMakeLists.txt
      └── test.cpp

如上所示,项目1包含2个文件:CMakeLists.txt用于描述项目构建步骤;test.cpp,c++源文件,具体内容如下:

  • CMakeLists.txt
    CMakeLists.txt 文件用于描述 CMake 构建过程和项目配置的文件。它包含了一系列 CMake 命令、变量设置和流程控制结构,用于告诉 CMake 如何生成适合你的平台和编译器的构建系统文件。一个最基本CMakeLists.txt 由3个命令组成,cmake_minimum_required指定cmake最小版本;project指定项目名称,版本等;add_executable指定生成的目标。
    cmake_minimum_required(VERSION 3.10)
    project(Test)
    add_executable(test test.cpp)
    
  • test.cpp
    #include 
    #include 
    int main(int argc, char **argv) {
        const int input_value = atoi(argv[1]);
        int square = input_value * input_value;
        printf("%d^2=%d\n", input_value, square);
        return 0;
    }
    
  • 项目配置和生成本地编译文件
    cd project1
    mkdir build
    cd build
    cmake ../
    
  • 项目编译
    cmake --build .
    

你可能感兴趣的:(CMake构建自动化,c++,ci/cd,自动化)