他のクラスに依存するクラスをコンパイルするパターンルールを使いたいと思います。各クラスについて、それが依存するクラスとヘッダファイルを定義します。私はこのような前提条件に、すべてのクラスのすべてのヘッダーファイルを追加したい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:インピーダンスミスマッチを修正する方法の1つは、「ファイルをコンパイルするのではなく、クラスをコンパイルしないで、ファイルごとにクラスを1つしか持たない」ことです。これが良いアイデアであろうとなかろうと、それはあなたとあなたの実験(私はそれがいくらか遅くコンパイルするかもしれないと想像しています)までです。しかし、それはJavaのために働きます:) –