目录
前言
- CMake是一个跨平台的安装编译工具,可以用简单的语句来描述所有平台的安装(编译过程)。
- CMake可以说已经成为大部分C++开源项目标配
因此,作为一名C C++发开人员,看到cmake不应该一脸茫然…
作为初学者,通俗的认为cmake就是一个linux下自动构建makefile等文件的实用工具!
广泛使用cmake的原因: 跨平台开发方便共享操作,使写Makefile更简便;
跨平台开发
假设有一个跨平台项目,其中C++代码可能会在不同的OS系统/IDE上共享;
- Win下的VS
- Linux下的gcc
- MAC下的Xcode
当我们想添加一个bar.cpp 的源文件,我们就需要将其添加到各种OS使用的每个工具中:
为了保持运行环境的一致性,则必须多次进行类似的更新,还必须手动执行(在本例中,图中用红色标记的箭头)。
这种方法因为手动也容易出错,而且不灵活。
CMake通过在开发过程中添加额外的步骤来解决这个设计缺陷。
您可以在CMakeLists.txt文件中描述您的项目,并使用CMake自动生成构建项目的工具,使用跨平台CMake代码:
同样的操作-添加新的bar.cpp文件,现在只需一步即可完成:
跨平台的性质没有变,照样有很多不同的OS在共享代码,但是只需要一个cmake可以很好地维护起来;
CMake语法特性
基本语法格式:指令(参数 1 参数 2…)
- 参数使用括号括起
- 参数之间使用空格或分号分开(这里有点违背我们用逗号分隔参数的习惯)
指令是大小写无关的,参数和变量是大小写相关的
-
语法指令部分有点像SQL,是大小写无关的
-
set(HELLO hello.cpp) # 设置变量HELLO的函数,后续会介绍 # 下面两条指令等价 add_executable(hello main.cpp hello.cpp) ADD_EXECUTABLE(hello main.cpp ${HELLO})
变量使用${}方式取值,但是在 if 条件控制语句中应直接使用变量名
CMake重要指令和常用变量
重要指令
cmake版本,项目工程,变量的设置:
-
cmake_minimum_required - 指定CMake的最小版本要求
# 语法:cmake_minimum_required(VERSION versionNumber [FATAL_ERROR]) # CMake最小版本要求为2.8.3 2cmake_minimum_required(VERSION 2.8.3)
linux下 cmake --version查看自己的cmake版本
-
project - 定义工程名称,并可指定工程支持的语言
# 语法:project(projectname [CXX] [C] [Java]) -- 方框中的为可选项
# 指定工程名为HELLOWORLD
project(HELLOWORLD)
- set -