cmake简明教程:关键语法分析

CMake是一个跨平台的安装/编译工具,它能用简单的语句描述所有平台的安装/编译过程。通常在Linux环境下,CMake根据CMakeLists.txt生成Makefile,在Makefile中定义了具体的编译过程。

一个简单的CMakeLists.txt文件如下所示:

cmake_minimum_required(VERSION 3.10)

project(MyProject VERSION 1.0)

add_executable(test main.cc)

这个CMakeLists.txt文件总共3行:

cmake_minimum_required 声明了对cmake程序版本要求,不得低于3.10

project定义了该工程的项目名称,以及版本号为1.0

add_executable设置了编译后生成的可执行文件名字为test,源代码文件为main.cc

cmake的语法是由一系列类似于add_executable这样的命令组成,其参数用括号包裹放在后面。下面让我们列举一下cmake常用命令有哪些:

命令

用途

cmake_minimum_required

声明对cmake版本号要求

project

定义项目相关参数,包括名字、版本号等

add_executable

声明可执行程序编译目标

add_library

声明链接库编译目标

add_subdirectory

添加子目录,需要在子目录中创建CMakeLists.txt文件

target_link_libraries

添加链接库

include_directories

添加头文件引用目录

include

引用其他CMake代码

link_directories

为连接器添加搜索路径

aux_source_directory

自动检索代码源文件

find_package

设置系统库依赖

set

设置变量

add_definitions

添加宏定义项

message

输出cmake执行过程日志信息

if..elseif..else..endif

分支判断语句

foreach...endforeach

循环语句

macro

相当于C里面的宏定义

function

定义一个函数

cmake是为编译而生,其定义的各种命令都是为编译服务的,让我们来看一条常规的编译命令:

gcc -O3 -Wall -I./math/include -L./math/lib -lmath -DNO_PRINT -o test test.c

其对应的CMakeLists.txt文件如下

cmake_minimum_required(VERSION 3.10)
project(Test VERSION 1.0)

set(CMAKE_C_COMPILER gcc)

set(CMAKE_BUILD_TYPE "Release")

add_definitions("-O3" "-Wall")

include_directories(./math)

link_directories(./math/lib)
target_link_libraries(math)

add_definitions("-DNO_PRINT")

if (!CMAKE_BUILD_TYPE STREQUAL "RELEASE")
        add_definitions("-g")
endif()

add_executable(test main.cc)

如上所示,cmake内置了大量于编译指令对应的命令,同时还定义了编程常用的变量设置、分支语句、循环语句等流程控制命令

猜你喜欢

转载自blog.csdn.net/ctbinzi/article/details/129471788