Makefile:检查文件是否存在

时间:2013-03-10 14:48:54

标签: bash makefile

我正在处理使用c源文件和头文件的makefile。

我想在编译之前检查所有这些文件是否存在,这样如果缺少一个,则打印自定义消息而不是通常的“无规则”来制作目标'。

代码如下:

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是否存在以打印自定义错误消息(如果缺少任何错误消息)?

1 个答案:

答案 0 :(得分: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