cmake和make

cmake和make

make

正常的一个可执行程序需要通过四步来完成,它们分别是预编译、编译、汇编、链接。当然也可以通过一步直接完成:gcc -o main main.c,但是我们直到一步完成的方式其实并没有减少编译的步骤,只是我们没看见它。
make通过一个叫makefile的文件来执行,makefile其实是用来管理工程,实现自动化编译的文件。当我们执行make操作时,系统就会自动寻找当前目录下一个叫做makefile的文件,然后运行。
但是我们创建makefile的意义何在呢?在一些大型项目中,我们可能会使用多个.c文件来生成最终的可执行程序。如果我们靠手动一条一条编译,将会变得异常繁琐。所以我们可以通过makefile文件将所有要执行的,c文件放进去然后一步处理.
我们首先创建三个.c文件:main.c ,add.c,max.c:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接着创建我们的makefile文件,其中all : main代表我们最终生成的可执行程序叫做main;main : main.o add.o max.o代表main最终生成所需要的.o文件,红色字体前面必须要用tab键 隔开,否则出错;main.o : main.c是我们需要编译的.c文件,add.o max.o以此类推;rm -rf main .o中r代表删除子目录,f表示不报出错误,.o代表所有.o文件。
在这里插入图片描述
最后生成好,我们执行make操作,系统会自动寻找一个叫做makefile的文件然后执行:
在这里插入图片描述
最后生成的所有文件
在这里插入图片描述
执行main程序,得到最后结果
在这里插入图片描述
执行make clean操作
在这里插入图片描述

cmake

如果要软件跨平台,就需要我们确保能够在不同的平台编译。但是我们知道不同的平台的编译方式方法都有所区别。如果我们使用make工具的话,需要为每一种平台写一次makefile,这样繁琐的工作太让人苦恼了。
cmake就是为了解决这个问题而设计出来的工具,它允许我们编写一种与平台要求无关的cmakelist.txt的文件,然后我们在编译的时候会根据用户目标所在的平台生成所需要的makefile文件和工程文件。
cmake的编译流程:
1:编写cmake所需要的cmakelist.txt
2:执行命令cmake ./cmakelist.txt所在目录,默认为当前目录,生成makefile文件
3:使用make进行编译
编写cmakelist.txt的语法:
1:cmake_minimum_required,指定运行cmake文件所需要的最低版本
2:project *,表示的名称是,所在的目录
3:add_executable (main main.c add.c max.c),将源文件t添加到可执行文件main中
4:aux_source_directory(. oxo),查找当前目录下的所有源文件,存入到指定变量名oxo
add_executable(main ${oxo}),然后将oxo里面的源文件添加到可执行程序main中
5:add_subdirectory(text),表明本项目还有一个叫做text的子目录,这样子目录下的源文件也会被处理(子目录中也需要一个cmakelist.txt的文件,并把源文件编译为静态链接库让可执行程序main调用)
6:target_link_libraries(main mathfunctions)表示可执行文件需要链接一个叫做mathfunctions的链接库
7:add.library(mathfunctions &{xxx}),将子目录中的源文件编译为静态链接库

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值