cmake使用教程(六)-蛋疼的语法,androidframework开发书籍

本文详细介绍了CMake的使用,包括Directory、Script和Module的使用方式,解析了CMake的基本编写格式,如add_executable命令。同时,文章探讨了CMake构建Android框架时的注意事项,强调了外部构建的重要性,以保持源代码的整洁并方便项目管理。
摘要由CSDN通过智能技术生成
1. Directory

当CMake处理一个项目时,入口点是一个名为CMakeLists.txt的源文件,这个一定是根目录下的CMakeLists.txt。这个文件包含整个工程的构建规范,当我们有多个子文件夹需要编译时,使用add_subdirectory(<dir_name>)命令来为构建添加子目录。添加的每个子目录也必须包含一个CMakeLists.txt文件作为该子目录的入口点。每个子目录的CMakeLists.txt文件被处理时,CMake在构建树中生成相应的目录作为默认的工作和输出目录。记住这一点非常关键,这样我们就可以使用外部构建了,而不必每次都使用蛋疼的内部构建,然后删除一堆文件才能从新构建。

2. Script

一个单独的<script>.cmake源文件可以使用cmake命令行工具cmake -P <script>.cmake选项来执行脚本。脚本模式只是在给定的文件中运行命令,并且不生成构建系统。它不允许CMake命令定义或执行构建目标。

3. Module

在Directory或Script中,CMake代码可以使用include()命令来加载.cmake。cmake内置了许多模块用来帮助我们构建工程,前边文章中提到的CheckFunctionExists。也可以提供自己的模块,并在CMAKE_MODULE_PATH变量中指定它们的位置。

cmake基本编写格式

先看一下定义的方式

名称 表达式 我认为的 例子
space <match '[ \t]+'> 任意个空格或者tab a b
newline <match '\n'> 换行符 a\nb
line_comment '#' <any text not starting in a bracket_argument and not containing a newline> 以’#"开头,不在’[]'块中,不包含换行符 #bus
separation space\|newline 空格或者换行 a b=a\nb
lineending linecomment?newline 从注释开头到换行符都不执行
command_invocation space* identifier space* '(' arguments ')'
quoted_argument "quoted_element* " 用引号包裹的参数 “a”

文档看起来很蛋疼,我直接写一个最简单的

add_executable(hello world.c foo.c) #这是一个注释

也等于

add_executable(hello
world.c
foo.c)
#这是一个注释

就是这么easy。注意参数这一块,可以用引号包裹起来,这代表一个参数,假如一行不能写完,则用\\符号来表示连接成一行,也可以不用引号,但是假如参数带有分隔符,则会被认为是多个参数。

定义变量

定义变量常用的函数是set(KEY VALUE),取消定义变量是unset(KEY)。 它们的值始终是string类型的,有些命令可能将字符串解释为其他类型的值。变量名是区分大小写的,可能包含任何文本,但是我们建议只使用字母数字字符加上_和-这样的名称。

变量的作用域和java基本一致,不多做讲解。

变量引用的形式为${variable_name},并在引用的参数或未引用的参数中进行判断。变量引用被变量的值替换,或者如果变量没有设置,则由空字符串替换。变量引用可以嵌套,并从内部进行替换,例如${outer_${

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值