-1

依赖项如何在 gnu Makefile 上工作?

我想创建一个 Makefile,它: - 将应用一些补丁(在我们的示例中,在 main.c 上应用 main.patch) - 从修补的 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 make 应用 main.patch 是没用的

谢谢你的帮助 :)

4

1 回答 1

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

PS,在你做的时候,你也可以引入自动变量;makefile 更干净,更易于维护:

main.o: main.c
    gcc -o $@ -c $< -Wall

toto: main.o # no need to specify $(my_patch) here
    echo "build"
    gcc -o $@ $^
于 2012-10-10T16:47:45.840 回答