一,前言
在看iar帮助的时候有介绍cmake来做构建系统,不过之前cmake仅看到过greenhill的,但是从来没用过嵌入式构建使用cmake的。于是在iar官网找到了一个教程及demo,里面还用到了ninja,我理解ninja和cmake不是类似的东东,为什么2个要一起用。ninja.exe下载后直接解压到c盘windows文件夹下。
二,实践体验
image.png三,分析
看了生成的_builds文件夹都没找到makefile,只有ninja相关的build文件,我突然明白了,编译elf用的等于不是make命令了,变成了ninja命令,所以找不到cmake构建的makefile了。
cmake语法-G后面是生成器类型,iar用cmake编译help中写了要3.23版本之上,所以我下载了3.26版本。所以Ninja Multi-Config可以理解为是一个配置项。
Ninja Multi-Config = Generates build-<Config>.ninja files.
于是按help的说明Ninja Multi-Config主要目的是用来生成构建类型的,比如我们常用的debug和release。仔细想想这个确实很重要,否则不区分类似,文件夹会很乱的。反正我之前没有关注过这块内容,网上搜索了下使用方法如下
在使用单配置的 Ninja 的时候,你需要在配置的时候进行指定
cmake . -B build -GNinja -DCMAKE_BUILD_TYPE=Release
cmake --build build
而使用多配置的 Ninja Multi-Config 的时候,你需要在启动构建的时候进行指定,不指定应该就是默认debug。
cmake . -B build -G "Ninja Multi-Config"
cmake --build build --config=Release
四,用gui的方式
搞明白关键内容一个是交叉编译,一个是选择Ninja为配置类型。我就尝试自己从0开始做一个工程,当然我喜欢用gui的方式,关键设置如下,然后选择一个编译的cmake文件,关于编译器的cmake文件也是我第一次看,cmake的语法理解起来很容易,这个文档就是类似在makefile中最开始我手写的相关编译的应用程序及路径的定义。
image.png
五,小结
基本上主要的cmake嵌入式构建系统框架算看明白了。原来cmake也可以很容易的进行嵌入式代码构建,之前我用cmake主要是linux应用开发。从语法的简单性及扩展功能的强大性上,其实我更喜欢cmake,不过以前我使用cmake总感觉它对其它软件有依赖性,configure的时候若出错我就会卡住,所以直接写makefile灵活性更强。不过今天用起来那么顺利,让我对cmake来构建嵌入式软件突然产生了好感~
网友评论