这篇文章写给接手大型项目,但是此前没有过makefile经验的人。
当拿到一个SDK时,找到其中最外层的一个Makefile。会废掉一些时间梳理SDK文档,但是要有恒心,一点点来,总能掌握的。可以借助README ME,如果有这个文档的话,会省去不少时间。一般最外层的Makefile会定一些整个项目的普遍内容。例如:编译指令所传入的参数,最外层Makefile接收并传入整个Makefile链;编译路径,编译工具,编译结构等。遇到看不懂的语句可以百度,makefile语句不会特别难。找到最外层的Makefile就等同于找到了整个Makefile链的头,剩下来的事情就是依次找到剩下的makefile。现在的项目会大量使用Cmake,这个可以看作和makefile等同的东西。语法也不难,也是makefile编译链的一环。也会有一些特别的makefile,是一些config或者depend,这些都是可以理清的。
最后附上一个调试技巧,输出变量。这个对于一开始不熟悉整个链路或者是排查问题都很有帮助。
Makefile中使用:
$(warning "The value is $(a)")
这是输出变量a的值,如果纯文本信息,可以不加$(a),内容自定
Cmakelist.txt中使用:
message( STATUS "the value is $(a)")
输出变量a的值,同样纯文本不加$(a),内容自定。STATUS可加可不加,只是一个标志,类似ERROR。
适当打印信息会帮助我们掌握Makefile,好了,分享到这。菜鸟一枚,路过大神可以指导。
PS:适配才是难点,如何把现成的Makefile改成贴合自己板子的makefile。有时makefile太多,我们改的可能不一定完整,寄希望于先前写代码的人在代码中做了备注,或者有文档流传。有时会出现编译没问题,但是跑起来的时候缺胳膊少腿啊。