【问题标题】:How to invoke command for each file using make? [duplicate]如何使用make为每个文件调用命令? [复制]
【发布时间】:2021-01-09 20:18:21
【问题描述】:

所以我在以下 Makefile 中有点挣扎:

src := $(wildcard *.c)
bin := $(src:%.c=out/%)

.PHONY: all
all: $(bin)

.PHONY: clean
clean:
    rm -r out

out:
    mkdir $@

$(bin): $(src) | out
    $(CC) -Iincludes/ -Wall $< -o $@

假设我有以下目录:

$ ls
includes/ Makefile test1.c test2.c

那么我希望发生以下情况:

$ make
mkdir out
cc -Iincludes/ -Wall test1.c -o out/test2
cc -Iincludes/ -Wall test2.c -o out/test1

但实际发生了什么:

$ make
mkdir out
cc -Iincludes/ -Wall test2.c -o out/test2
cc -Iincludes/ -Wall test2.c -o out/test1

我有点不想在其他解决方案中移动文件suggest

我很确定这一定很容易,但我迷路了。感谢您的帮助。

【问题讨论】:

标签: makefile


【解决方案1】:

考虑更改“$(bin)”规则:

out/%: %.c
    $(CC) -Iincludes/ -Wall $< -o $@

现有规则表明每个程序都依赖于所有源文件,并且每个程序都可以通过编译 ($

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 2014-07-13
    • 2020-09-15
    • 1970-01-01
    • 2017-11-14
    • 2020-02-11
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多