1

私はcソースファイルとヘッダーファイルを使用するmakefileに取り組んでいます。

コンパイルする前にこれらのファイルがすべて存在するかどうかを確認したいので、1つが欠落している場合は、通常の「ターゲットを作成するルールなし」の代わりにカスタマイズされたメッセージを出力します。

コードは次のとおりです。

PROG1=file1
PROG2=file2
INCLUDE=header
all: $(PROG1).x $(PROG2).x
%.x : %.c $(INCLUDE).c
     $(CC) -o $/$@ $^
     @ echo File $@ has been successfully created from $^;

file1.c、file2.c、header.hのいずれかが欠落している場合にカスタマイズされたエラーメッセージを出力するには、それらが存在することをどこでどのように確認する必要がありますか?

4

1 に答える 1

1
PROG1=file1
PROG2=file2
INCLUDE=header

all: $(PROG1).x $(PROG2).x

%.x : %.c $(INCLUDE).c
    $(CC) -o $/$@ $^
    @echo File $@ has been successfully created from $^

%.c :
    @echo Missing $@

%.h :
    @echo Missing $@

それはうまくいくでしょうか?これらのファイルが存在しない場合は、次のような出力が得られます。

posey@DEATHSTAR:~$ make all
Missing file1.c
Missing header.c
cc -o file1.x file1.c header.c
cc: error: file1.c: No such file or directory
cc: error: header.c: No such file or directory
cc: fatal error: no input files
compilation terminated.
make: *** [file1.x] Error 4
于 2013-03-10T15:31:32.637 に答える