gpt4 book ai didi

makefile - 尝试创建使用 make 连接文件的一般规则

转载 作者:行者123 更新时间:2023-12-02 20:16:27 25 4
gpt4 key购买 nike

我有两个看起来像这样的文件夹:

process:

raw:
a_1.x.txt a_2.x.txt b_1.x.txt b_2.x.txt
a_1.x.dat a_2.x.dat b_1.x.dat b_2.x.dat

这些 txt 文件是由另一个规则创建的二进制文件 *.dat 的转储。我想创建一个 make 文件,它将汇集 raw/%_#.txt 文件来创建 process/%.txt。我可以用...来做到这一点

process/a.txt : raw/a_1.x.txt raw/a_2.x.txt
cat $^ > $@

process/b.txt : raw/b_1.x.txt raw/b_2.x.txt
cat $^ > $@

...当我执行 make process/a.txtmake process/b.txt 时。但在我的现实生活问题中,我有 a、b、c 等,每个原始文件夹中都有可变数量的文件。因此,我想创建一个通用规则来为我做到这一点。

我已经尝试过了...

.SECONDEXPANSION:
process/%.txt : $$(join $$(join raw/,%),$$(wildcard *.x.txt)))
cat $^ > $@

但是 make 命令返回

make: *** 没有规则可以创建目标“process/a.txt”。停止。

同上:

process/%.txt : $$(patsubst raw,process,$$(patsubst .txt, $$(wildcard *.x.txt),))
cat $^ > $@`

有什么建议吗?

最佳答案

也许这会有所帮助:

DATA = $(wildcard raw/*.dat)
TEXTS = $(patsubst %.dat,%.txt,$(DATA))
PROCESSED = $(subst raw,process,$(TEXTS))


all: $(PROCESSED)


%.txt: %.dat
touch $@

process/%.txt: raw/%.txt
touch $@

关于makefile - 尝试创建使用 make 连接文件的一般规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34295715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com