gpt4 book ai didi

linux - 如何处理 make 中的特殊情况?

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:01 25 4
gpt4 key购买 nike

我有以下 makefile,其中一堆 pla 文件被处理为 a 文件

$(SRC_DIR)dec.plainc.pla 和更多的 *.pla文件

$(FILES) = 所有对应的 *.a 文件,而不是 dec.a 我有 dec0.adec1.a 因为我要生成dec 对应的dec0.adec1.a 两个不同的文件。 pla 基于传递的变量。我该如何实现?

$(FILES):$(TMP_DIR)/%.a      : $(SRC_DIR)/%.pla                
$(BASE_CMD) < $< > $@

$(FILES):$(TMP_DIR)/dec0.a : $(SRC_DIR)/dec.pla
$(BASE_CMD) -D c=0 < $< > $(TMP_DIR)/dec0.a

$(FILES):$(TMP_DIR)/dec1.a : $(SRC_DIR)/dec.pla
$(BASE_CMD) -D c=1 < $< > $(TMP_DIR)/dec1.a

上面的方法我都试过了,还是报错

proc.make:8: *** target pattern contains no '%'.  Stop

我在这里错过了什么?

最佳答案

$(FILES): $(TMP_DIR)/dec0.a: $(SRC_DIR)/dec.pla 是一个 static pattern rule ...没有模式。这是无效的 make 语法。

你可以试试:

FILES1 := $(patsubst $(SRC_DIR)/%.pla,$(TMP_DIR)/%.a,$(wildcard $(SRC_DIR)/*.pla))
FILES2 := $(TMP_DIR)/dec0.a $(TMP_DIR)/dec1.a

$(FILES1): $(TMP_DIR)/%.a: $(SRC_DIR)/%.pla
$(BASE_CMD) < $< > $@

$(FILES2): $(TMP_DIR)/dec%.a: $(SRC_DIR)/dec.pla
$(BASE_CMD) -D c=$* < $< > $@

关于linux - 如何处理 make 中的特殊情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50264241/

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