【发布时间】:2014-06-27 10:00:02
【问题描述】:
是否有任何本地 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}/$@
但是我需要进行单元测试,并且单元相互依赖,并且子系统的测试层次结构写成硬编码的依赖链非常累人。
也许我做错了?也许这个链接配方有替代品?谢谢!
【问题讨论】:
-
你是什么意思“...的目标先决条件”?我明白“目标的先决条件”是什么意思,但不是“获得目标先决条件的先决条件”。