【发布时间】:2016-10-13 03:39:34
【问题描述】:
我有一个包含很多目标的 Makefile,每个目标的配方都非常相似。
foo:
gcc foo.c -o foo
mv foo ~/bin
bar:
gcc bar.c -o bar
mv bar ~/bin
baz:
gcc baz.c -o baz
mv baz ~/bin
我想避免所有这些重复。我想要类似下面的东西(这不是有效的语法;这只是表达我的意图)。
TARGET_NAME:
gcc $(TARGET_NAME).c -o $(TARGET_NAME)
mv $(TARGET_NAME) ~/bin
有可能做这样的事情吗?如果不是,我能写出的最好的 Makefile 是什么,可以最大限度地减少配方中的重复?
【问题讨论】:
-
就像@beta 在其他地方已经指出的那样,您的
Makefile已损坏,因为您移动了您制作的文件,以便每次都重新制作它们,无论是否有必要。此外,gcc的-o选项可以显着地采用子目录。bin/%: %.c; gcc $< -o $@