Makefile:获取目标先决条件的先决条件

是否有任何本地生成文件(GNU make等)来获取目标先决条件的先决条件? 这些问题不是关于通过编译器从源文件进行依赖性检查(例如,g ++ -MM)。

在主题上找不到任何东西。 正如我所看到的,这种情况没有特别的变数。

为了说明问题,这里是我从C ++源代码到对象的编译配方的定义,虽然很标准:

##### UNIVERSAL COMPILE #####
%.o: %.cpp %.hpp
   ${CC} ${CFLAGS} -c $< -o $@

然后我需要构建真正的大型链接:

a: a.o
b: b.o a.o
c: c.o b.o a.o
d: d.o c.o b.o a.o
etc, up to N times...

这是因为这个链接配方是必要的:

##### UNIVERSAL LINK #####
%: %.o
   ${LN} ${LNFLAGS} $^ -o $@

如您所见,recipe会提供所有提供的依赖关系 ,但需要获取所有提供的依赖关系的所有依赖关系

整体程序链接没有问题,因为它在配方中:

##### PROGRAM LINK ######
${BIN}: ${OBJ}
   ${LN} ${LNFLAGS} ${OBJ} -o ${BINDIR}/$@

但是我需要做单元测试,并且单元依赖于每个其他单元,依赖性和子系统测试层次结构非常累人,可以编写为硬编码的依赖链。

也许我是以错误的方式做的? 也许有这个链接配方的替代品? 谢谢!


你做错了。 为什么你想声明的是bo必须每次重新编译ao变化(这是(一)当您指定的先决条件PF这意味着事情bo : ao )? 这不是需要发生的事情,也没有意义。

您需要列出所有对象文件作为单个可执行文件的先决条件,例如:

exe: a.o b.o c.o d.o ...

而已。

链接地址: http://www.djcxy.com/p/64119.html

上一篇: Makefile: get prerequisites of target prerequisites

下一篇: Use of 'Empty Target' in makefile