本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

CMake学习笔记

CMake简介

113px-Cmake.svg.png

CMake是一个开源、跨平台的Make工具,英文全称为cross platform make.它使用简单的脚本语句来描述所有平台的编译过程。类似的工具还有Qt的qmake、微软的MS nmake、GNU的GNU make 等。不同的make工具遵循不同的标准,也适用于不同的操作系统平台。而CMake相比之下最突出的优点是跨平台,只需要编写一个CMakeList.txt指定编译流程,然后就可以根据用户平台的不同而生成当前平台的Makefile和工程文件。比如著名的opencv就是采用了CMake,在编译opencv源码的时候就可以知道,在window编译时首先会根据源码目录下的CMakeList.txt文件生成VS解决方案,而后再使用VS进行编译操作;在Linux平台编译时,也是根据CMakeList.txt文件先产生Makefile文件,再使用Linux的Make工具进行编译操作。


作为一个优秀的跨平台开源Make工具,使用CMake作为构建工具的项目有很多,比较著名的有:

  • OpenCV
  • Boost c++ libraries
  • LLVM
  • clang

...
更多的开源库可在维基百科查看CMake-维基百科

简单文件

  • cpp源文件
//main.cpp
#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
  • CMakeLists文件
# 1 cmake version
cmake_minimum_required(VERSION 3.13)

# 2 project name
project(demo1)

# 3 cpp version
set(CMAKE_CXX_STANDARD 14)

# 4 executable file
add_executable(demo1 main.cpp)

笔记

  • 构建文件名为CMakeLists.txt
  • 最简单的单文件构CMakeLists.txt包含三个部分:1(cmake最低版本要求)、2(项目信息)、4(指定生成目标文件)
  • CMakeLists.txt详解
# 1 cmake version
cmake_minimum_required(VERSION 3.13)

cmake最低版本要求,还有以下的扩展写法

cmake_minimum_required(VERSION 3.1...3.15)

# If CMake version is less than 3.12, the if block will be true, and the policy will be set to the current CMake version.
if(${CMAKE_VERSION} VERSION_LESS 3.12)
    cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
endif()
# 2 project name
project(demo1)

项目信息,描述项目信息的名称


# 3 cpp version
set(CMAKE_CXX_STANDARD 14)

设定使用c++编译器的版本,使用符合c++14标准的编译器编译项目。

# 4 executable file
add_executable(demo1 main.cpp)

指定生成的目标信息,将main.cpp文件编译成一个名称为demo1的可执行文件。

references

【1】CMake入门实战
【2】An Introduction to Modern CMake
【3】CMake Tutorial
【4】CMake-维基百科


本文由芒果浩明发布,转载请注明出处。
本文链接:https://mangoroom.cn/tools/cmake-learning.html


 继续浏览关于 cmake 的文章

 本文最后更新于:2020/03/14 19:49:52,可能因经年累月而与现状有所差异

 引用转载请注明:芒果的Blog > 工具 > CMake学习笔记