我想使用模式规则编译依赖于其他类的类。对于每个类,我定义它依赖的类和头文件。当编译一个specifc类,我想每个班级的每一个头文件添加到先决条件是这样的:在GNU中使用函数中的模式规则模式make
# Class 1
C1 = C1
C1_H = C1.hpp
C1_T =
C1_O = C1.o
# Class 2, depending on class 1
C2 = C2 $(C1)
C2_H = C2.hpp
C2_T =
C2_O = C2.o
.SECONDEXPANSION:
# pattern rule. Want to read the C%_H variable of every class this depends on
C%.o : C%.hpp C%.cpp $(foreach var,$$(C%),$($(var)_H))
$(CC) -o [email protected] -c $<
在foreach功能没有在这里工作,为“%”的扩展功能后出现扩张。有没有办法仍然这样做?
预先感谢您
在C++中,您不编译_classes_,而是编译_files_。 – sbi
查看gcc的-M选项,例如,请参阅http://scottmcpeak.com/autodepend/autodepend.html。 –
@sbi,Deve:修改阻抗不匹配的一种方法(“在C++中,不编译类,编译*文件*”)是每个文件只有一个类。这是否是一个好主意取决于你和你的实验(我想它可能会使编译速度变慢)。但是,它适用于Java :) –