用GNU Make定向多个嵌入式硬件平台的方法

时间:2017-08-08 19:28:38

标签: makefile embedded stm32

如何确保为一个硬件目标编译的目标文件不会用于需要以不同方式编译的其他硬件目标?

在学习嵌入式开发的过程中,我正在使用GNU ARM嵌入式工具链。我已经有几个开发板(使用STM32F0和STM32F4处理器),并计划在未来制作我自己的主板。我希望使用通用软件存储库进行多次硬件迭代。

显然,我的Makefile中会有多个目标,为每个平台调用相应的定义和编译器标志,并且可能同时为所有平台构建make all。据我了解,make是一个增量构建系统,只有在源文件被更改后才重新编译目标代码(* .o)文件,如果我使用了不同的定义,它将不会重新编译选项,错误的目标代码将传递给链接器。

在不同目标之间切换时,我似乎可以勤奋地make clean,但这会依赖于人为操作,如果我忘记了,可能会产生错误的构建,并且无法用于make all为各自的硬件生成多个二进制文件。

编辑备注:根据反馈意见,我已做空并重新安排,以使问题更加清晰客观。我不是一般性地询问如何使用Make,而是如何防止,比如说mylib.o正在为STM32F0编译,然后在STM32F4的构建中重新使用。

我对替代工具感到好奇,欢迎在评论中讨论,但这个问题是针对GNU Make的。

1 个答案:

答案 0 :(得分:1)

为了避免在目标之间进行干净构建,每个目标都必须具有单独的构建目录,以便目标依赖项是独立的,并使用适当的工具链和构建开关等专门生成。