2016-08-10 4 views
0

ソースファイルがたくさんあるプロジェクトがありますが、そのうちのいくつか(すべてではありません)は特定の* .hファイルが変更された後に再構築する必要があります(currtype.h)。GNU make first以外のすべてのルールを無視します。

%.obj: %.c 
    $(COMPILE) 

main.obj: main.c currtype.h 
    $(COMPILE) 
CustomHTTPApp.obj: CustomHTTPApp.c currtype.h 
    $(COMPILE) 
CustomSNMPApp.obj: CustomSNMPApp.c currtype.h 
    $(COMPILE) 

COMPILE = -"$(CC)" -C $< $(CFLAGS) $(INCLUDE_STACK) 

をしかし、私は私のcurrtype.hを変更するよりも、私は唯一のmain.cが再コンパイルされている参照してください。私は私のメイクで、このための明示的なルールを持っています。最初の行にCustomHTTPAppを、2番目にmain.cを置くと、CustomHTTPAppだけが再コンパイルされます。これはどのように修正できますか?

+0

「make」を起動するときにコマンドラインを入力してください。また、プラットフォームとそれを '作る'? – amn

+0

私はMinGW-w64 Win64シェルにmakeと入力します(私はWindows 8.1を使っています)。 – Keroronsk

+0

この依存チェック問題にもかかわらず、プロジェクトは正しく構築されています。 – Keroronsk

答えて

3

"make"を実行すると、最初の非暗黙のルールが実行され、main.objが構築されます。すべての出力ファイルを構築する別のターゲットを追加する必要があります。 「すべて」と呼ばれる:

all: main.obj CustomHTTPApp.obj CustomSNMPApp.obj 

%.obj: %.c 
    $(COMPILE) 

main.obj: main.c currtype.h 
    $(COMPILE) 
CustomHTTPApp.obj: CustomHTTPApp.c currtype.h 
    $(COMPILE) 
CustomSNMPApp.obj: CustomSNMPApp.c currtype.h 
    $(COMPILE) 

COMPILE = "$(CC)" -C $< $(CFLAGS) $(INCLUDE_STACK) 
+0

ありがとう、今それは理にかなっています。私はその事件は今閉じていると思う。 – Keroronsk

関連する問題