猿问

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

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


$(SRC_DIR)具有dec.pla,inc.pla和更多*.pla文件


$(FILES)=所有对应的*.a文件,而不是dec.a我拥有的dec0.a,dec1.a 因为我想生成两个不同的文件,dec0.a并基于要传递的变量进行dec1.a对应dec.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

我在这里想念什么?


扬帆大鱼
浏览 236回答 1
1回答

小怪兽爱吃肉

$(FILES): $(TMP_DIR)/dec0.a: $(SRC_DIR)/dec.pla是静态模式规则...没有模式。这是无效的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&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; $(BASE_CMD) < $< > $@$(FILES2): $(TMP_DIR)/dec%.a: $(SRC_DIR)/dec.pla&nbsp; &nbsp; &nbsp; &nbsp; $(BASE_CMD) -D c=$* < $< > $@
随时随地看视频慕课网APP
我要回答