1

我正在开发一个使用 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 是否存在以打印自定义错误消息?

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 回答