如何从终端覆盖makefile中的变量

时间:2012-07-09 10:02:57

标签: makefile gnu-make multiple-makefiles

我创建了一个简单的makefile,即

COMMON=hello
all:
  gcc $(COMMON).c -o $(COMMON).o

我运行makefile的目录包含三个文件:hello.c add.c multiply.c factorial.c和subtraction.c。

当我使用make命令在终端中编译它时,打印hello。现在我想在程序中进行更改,这样当我编写“make add”或“make multiply”或“make factorial”时,相应的程序将被编译。

1 个答案:

答案 0 :(得分:1)

只需在命令行上提供它。

make COMMON=bye

如果目标是可以从当前目录中的文件名预测的,那么您根本不需要Makefile,因为Make已经知道如何从multiply创建multiply.c

.PHONY: all
all: hello add multiply factorial

如果您真的想要一个明确的食谱,请尝试这样的事情。

%: %.c
        gcc -o $@ $^