Cmake实例分析

本文解析了CMake生成makefile的方法,其编译基本步骤为cmake和make,CMakeLists.txt以目录为执行单位。还介绍了在buildroot环境中调试CMakeLists.txt的方法,最后通过mbedtls的CMakeLists.txt实例,分析了cmake相关命令的使用,如指定版本要求、设置变量等。

Cmake与autotools一样都是生成makefile的工具,但其步骤更清晰明了,这里做一下解析。

CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码。因此CMake的编译基本就两个步骤:

  1. cmake
  2. make

CMakeLists.txt是以目录为执行单位的,CMakeLists.txt中可以添加子目录,子目录下也存在一个该目录的CMakeLists.txt文件。

以mbedtls的CMakeLists.txt为例:

调试方法:

在buildroot环境中,调试CMakeLists.txt的方法如下:

  1. 修改CMakeLists.txt,在其中加入调试语句

message( [STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR]
  "message to display" ...)
打印变量的示例如下:

message(STATUS ${CMAKE_COMPILER_IS_MSVC})

        2. 执行如下命令,就会输出加入的调试信息。

$ make mbedtls-reconfigure > m1.txt 2>&1

实例分析:

cmake_minimum_required(VERSION 2.6)

cmake_minimum_required(VERSION <min>[...<policy_max>] [FATAL_ERROR])
该命令指定了编译该工程对cmake的最高、最低版本要求,如果 CMake 的运行版本低于所需版本,它将停止处理项目并报告错误。

project("mbed TLS" C)   

project(<PROJECT-NAME> [<language-name>...])

指定工程名称以及语言

option(USE_PKCS11_HELPER_LIBRARY "Build mbed TLS with the pkcs11-helper library." OFF)

option(<variable> "<help_text>" [value])

  • variable:定义选项名称
  • help_text:说明选项的含义
  • value:定义选项默认状态,一般是OFF或者ON,除去ON之外,其他所有值都为认为是OFF

string(REGEX MATCH "IAR" CMAKE_COMPILER_IS_IAR "${CMAKE_C_COMPILER_ID}")

string(REGEX MATCH <regular_expression> <output_variable> <input> [<input>...])
从所有<input> ...中查找<regular_expression>匹配到的字符串,并存放于<output_variable>,查不到输出为空字符串。多个输入时先连接再做操作。只匹配第一次。

以上语句是查找Cmake的编译器是否是IAR规范。

set(WARNING_BORDER "*******************************************************\n")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值