如何在makefile中将make target用作变量?

时间:2015-08-27 01:34:42

标签: makefile

我正在尝试为项目设置一个简单的makefile,我有10个子项目。每个子项目都位于名为123 ... 10的目录中。在每个目录中,我有一个*.c文件。我已经想出如何编译我的所有*.c文件,但我无法弄清楚如何使用make目标只编译一个特定的文件。这是我到目前为止所做的:

all:
    some code

$(@): $(@).c
    gcc -o $(@)/$(@) $(@)/$(@).c

如果有帮助,这是我的一般目录结构:

├── 1
│   └── 1.c
├── 2
│   └── 2.c
├── 3
│   └── 3.c
└── makefile

1 个答案:

答案 0 :(得分:1)

BINARIES = 1/1 2/2 3/3...

all: $(BINARIES)
    some code

$(BINARIES): %: %.c
    gcc -o $(@) $<

可能与您正在寻找的相近。 $(BINARIES): %: %.c是静态模式规则。要了解其行为,您可以阅读GNU make手册的 4.12静态模式规则部分。