我有以下生成文件:
all: a.out b.out
.PHONY: gen_hdr1
gen_hdr1:
#call script 1 that generates x.h
rm a.o #try to force rebuild of a.cpp
.PHONY: gen_hdr2
gen_hdr2:
#call script 2 that generates x.h
rm a.o #try to force rebuild of a.cpp
b.out: gen_hdr2 a.o
g++ -o b.out a.o
a.out: gen_hdr1 a.o
g++ -o a.out a.o
*.o : *.cpp
g++ -c $< -o $@
a.cpp 包含 xh
我想做的事:
- 删除 ao 如果存在
- 为 App A 生成 xh
- 编译.cpp
- 构建应用程序 A
- 删除 ao 如果存在
- 为 App B 生成 xh
- 再次编译 a.cpp
- 构建应用程序 B
运行makefile的输出是:
#call script 1 that generates x.h
rm -f a.o #try to force rebuild of a.cpp
g++ -c -o a.o a.cpp
g++ -o a.out a.o
#call script 2 that generates x.h
rm -f a.o #try to force rebuild of a.cpp
g++ -o b.out a.o
g++: a.o: No such file or directory
g++: no input files
make: *** [b.out] Error 1
基本上,在构建 App B 时找不到 ao。如何强制 make 系统重建它?