我正在处理使用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是否存在以打印自定义错误消息(如果缺少任何错误消息)?
答案 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