相关疑难解决方法(0)

使用makefile和静态模式规则进行树构建

我正在研究一些在ARM上运行的裸机嵌入式代码,因此必须处理整个ARM与THUMB模式的区别.当前构建系统使用静态模式规则来确定是以ARM还是THUMB模式编译文件.

$(ACOBJS) : %.o : %.c
    @echo
    $(CC) -c $(CFLAGS) $(AOPT) -I . $(IINCDIR) $< -o $@
$(TCOBJS) : %.o : %.c
    @echo
    $(CC) -c $(CFLAGS) $(TOPT) -I . $(IINCDIR) $< -o $@
Run Code Online (Sandbox Code Playgroud)

其中ACOBJS是应该处于ARM模式的输出对象列表,对于TCOBJS和Thumb模式是相同的.这些列表是以通常的方式从源列表创建的

ACOBJS   = $(ACSRC:.c=.o)
TCOBJS   = $(TCSRC:.c=.o)
Run Code Online (Sandbox Code Playgroud)

目前,这导致构建中的目标文件散布在源树上,我并不特别希望这样.我一直试图在树构建中设置它,但却无法使其工作.我不一定需要充分利用树构建工作,但我希望至少能够使用输出目录,在该目录下所有中间文件最终都会运行.在这些限制条件下实现这一目标的最佳策略是什么?

我正在考虑的一个选项是使用automake或整个autotools工具链来构建一个makefile.这似乎支持创建我想要的makefile类型,但看起来有点矫枉过正.设计用于便携式构建的自动工具和裸机嵌入式系统之间似乎存在固有的阻抗不匹配,其中主机元组之类的东西由目标微观元素决定.

build-process makefile gnu-make

9
推荐指数
1
解决办法
6366
查看次数

标签 统计

build-process ×1

gnu-make ×1

makefile ×1