Make与CMake的区别及关系

一般程序实现的大体步骤为:

1.用编辑器编写源代码,如.c文件。

2.用预处理器把.c文件翻译成中间文件,如.i文件。(此步骤有时不在编译结果中体现)

3.用编译器把中间文件翻译成汇编语言文件,如.s文件。(此步骤有时不在编译结果中体现)

4.用汇编器把汇编文件翻译成可重定向的目标文件,如.o文件。

5.用链接器连接目标文件生成可执行文件,如.exe文件。

科普:

– 可重定位(Relocatable)目标文件:由编译器和汇编器生成,可以与其他可重定位目标文件合并创建一个可执行目标文件;
– 可执行(Executable )目标文件:由链接器生成,可以直接被拷贝到内存中执行;
– 共享(shared)目标文件:一类特殊的可重定位目标文件,可以在加载时或运行时被动态的加载到内存并执行。

但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。

对于一个大工程,编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。所以在编程的世界里没有捷径可走,还是要脚踏实地的。

所以流程如下:

其他与make编译相关的概念解读:

1.Kconfig:是用来配置Linux内核编译选项的。

2.makefile文件的几种形式:

1)一般标准的Makefile或makefile,内容和书写格式一样,只是名字大小写区别;

2)通过命令指定的特殊文件名,如make.linux、make.windows等,最终还是按照Makefile或makefile的格式来解析的;

3)*.mk文件是Android系统基于make命令封装开发的makefile文件格式,内容格式更简单,且新增了一些命令和处理。

4)CMakeLists.txt文件就是上面的CMakeList规则列表,用于配置cmake编译规则的。执行cmake命令后会根据cmakelist生成makefile,然后执行make命令生成可执行文件。

5).cmake文件是cmake工具的执行文件,用于配置一些执行命令和配置。

参考资料:

https://blog.csdn.net/weixin_42491857/article/details/80741060

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值