为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2021-04-10 18:10:40
我有以下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我在这里想念什么?
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超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                

        $(BASE_CMD) < $< > $@


$(FILES2): $(TMP_DIR)/dec%.a: $(SRC_DIR)/dec.pla

        $(BASE_CMD) -D c=$* < $< > $@


查看完整回答
反对 回复 2021-04-16
  • 1 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信