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

标签 makefile gnu-make multiple-makefiles

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

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

我运行 makefile 的目录包含三个文件:hello.c add.cMultiply.c Factorial.c 和 Subtraction.c。

当我使用 make 命令在终端中编译它时,会打印 hello。现在我想在程序中进行更改,以便当我编写“make add”或“makemultiply”或“makefactorial”时,相应的程序将编译。

最佳答案

只需在命令行上提供它即可。

make COMMON=bye

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

.PHONY: all
all: hello add multiply factorial

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

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

关于makefile - 如何从终端覆盖 makefile 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11392863/

相关文章:

Makefile警告: pattern recipe did not update peer target

makefile - 如何配置我的 makefile 以进行调试和发布版本?

makefile - 为什么 makefile 惰性求值会在 "parent"配方中找到一个文件,但找不到当前文件?

c - 使用 makefile 进行多次编译

gnu-make - makefile 中的自动依赖生成

linux - 为什么 linux 内核的 Makefile 中的变量不起作用?

makefile - 如何在 automake 中创建依赖项?

linux - Coreutils 测试套件命令

python - 在 makefile 中使用变量