我想用GNU make工具为我的微控制器构建一个C项目.我想以一种干净的方式做到这一点,这样我的源代码在构建之后就不会被目标文件和其他东西弄得乱七八糟.所以想象一下,我有一个名为"myProject"的项目文件夹,里面有两个文件夹:
- myProject
|
|---+ source
|
'---+ build
Run Code Online (Sandbox Code Playgroud)
build文件夹只包含一个makefile.下图显示了运行GNU make工具时应该发生的事情:
所以GNU make应该为它可以在源文件夹中找到的每个.c源文件创建一个目标文件.目标文件应该在与源文件夹中的结构类似的目录树中构建.
GNU make还应为每个.c源文件创建一个.d依赖文件(事实上,依赖文件是某种makefile本身).GNU make手册第4.14节"自动生成先决条件"中描述了依赖项文件:
对于每个源文件name.c,都有一个makefile name.d,它列出了目标文件name.o所依赖的文件.
从下面的问题#1 关于GNU使相关文件*.D,我了解到,增加的选项-MMD,并-MP给CFLAGS了GNU gcc编译器可以帮助自动执行.
所以现在问题就出现了.有没有人有一个样本makefile执行这样的源外构建?或者有关如何入门的一些好建议?
我很确定大多数编写过这样一个makefile的人都是Linux用户.但是微控制器项目也应该在Windows机器上构建.无论如何,即使你的makefile只是Linux,它提供了一个很好的起点;-)
PS:我想避免使用像CMake,Autotools或任何与IDE有关的任何工具.只是纯粹的GNU make.
我会很感激 :-)
更新依赖项文件
请看一下这个问题:当GNU更新.d文件时,确切的事件链是什么?