我正在尝试为项目设置一个简单的makefile,我有10个子项目。每个子项目都位于名为1
,2
,3
... 10
的目录中。在每个目录中,我有一个*.c
文件。我已经想出如何编译我的所有*.c
文件,但我无法弄清楚如何使用make目标只编译一个特定的文件。这是我到目前为止所做的:
all:
some code
$(@): $(@).c
gcc -o $(@)/$(@) $(@)/$(@).c
如果有帮助,这是我的一般目录结构:
├── 1
│ └── 1.c
├── 2
│ └── 2.c
├── 3
│ └── 3.c
└── makefile
答案 0 :(得分:1)
BINARIES = 1/1 2/2 3/3...
all: $(BINARIES)
some code
$(BINARIES): %: %.c
gcc -o $(@) $<
可能与您正在寻找的相近。 $(BINARIES): %: %.c
是静态模式规则。要了解其行为,您可以阅读GNU make手册的 4.12静态模式规则部分。