依赖关系如何在gnu Makefile上运行?
我想创建一个Makefile: - 将应用一些补丁(在我们的例子中,在main.c上应用main.patch) - 从patched main.c文件创建一个名为toto的程序
my_patch=./main.patch
all: toto
patch: $(my_patch)
echo "apply patch"
main.o: main.c
gcc -o main.o -c main.c -Wall
toto: patch main.o $(my_patch)
echo "build"
gcc -o toto main.o
但是,补丁总是应用...这引出了我的问题: “依赖关系如何在gnu Makefile上运行?”
如果main.patch的日期小于二进制toto,我怎么能告诉gnu使用main.patch是没用的
感谢您的帮助:))
答案 0 :(得分:1)
假目标(patch
)令人困惑。 patch
规则会修改main.c
,因此请将其作为目标:
my_patch=./main.patch
all: toto
main.c: $(my_patch)
echo "apply patch"
main.o: main.c
gcc -o main.o -c main.c -Wall
toto: main.o # no need to specify $(my_patch) here
echo "build"
gcc -o toto main.o
P.S。当你在它的时候,你也可以介绍automatic variables; makefile更简洁,更容易维护:
main.o: main.c
gcc -o $@ -c $< -Wall
toto: main.o # no need to specify $(my_patch) here
echo "build"
gcc -o $@ $^