我想使用模式規則編譯依賴於其他類的類。對於每個類,我定義它依賴的類和頭文件。當編譯一個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 :) –