首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >makefile camelcase模式匹配

makefile camelcase模式匹配
EN

Stack Overflow用户
提问于 2009-06-03 18:13:52
回答 2查看 737关注 0票数 1

我想在makefile中为camelcase执行模式匹配规则:

例如,显式规则:

MyFileName.java: java协议-- my_file_name.proto _out=。$<

我需要上面的模式匹配规则,这样只有一个规则可以从相应的proto文件创建camelcase表单的java目标。

太好了!

EN

回答 2

Stack Overflow用户

发布于 2009-06-03 18:20:01

注意:我假设你使用的是Gnu make。

你不能直接在Make中做这件事。解决方案是使用脚本(例如,使用sed或awk )生成一个包含规则的文件。然后将该文件包含在Makefile中。您可以定义依赖项,以便make在包含过期的包含文件之前重新生成包含文件。Make info页面有更多详细信息。

并非所有版本的Make都具有此功能。

票数 2
EN

Stack Overflow用户

发布于 2009-06-03 19:20:05

永不言败!

代码语言:javascript
复制
FILES:=foof_goog.proto zozo_bobo.proto


define makeCamel
$(strip \
$(subst .proto,.java,   \
$(patsubst a%,A%,   \
  $(patsubst b%,B%, \
  $(patsubst c%,C%, \
  $(patsubst d%,D%, \
  $(patsubst e%,E%, \
  $(patsubst f%,F%, \
  $(patsubst g%,G%, \
  $(patsubst h%,H%, \
  $(patsubst i%,I%, \
  $(patsubst j%,J%, \
  $(patsubst k%,K%, \
  $(patsubst l%,L%, \
  $(patsubst m%,M%, \
  $(patsubst n%,N%, \
  $(patsubst o%,O%, \
  $(patsubst p%,P%, \
  $(patsubst q%,Q%, \
  $(patsubst r%,R%, \
  $(patsubst s%,S%, \
  $(patsubst t%,T%, \
  $(patsubst u%,U%, \
  $(patsubst v%,V%, \
  $(patsubst w%,W%, \
  $(patsubst x%,X%, \
  $(patsubst y%,Y%, \
  $(patsubst z%,Z%, \
   $(subst _a,A,    \
   $(subst _b,B,    \
   $(subst _c,C,    \
   $(subst _d,D,    \
   $(subst _e,E,    \
   $(subst _f,F,    \
   $(subst _g,G,    \
   $(subst _h,H,    \
   $(subst _i,I,    \
   $(subst _j,J,    \
   $(subst _k,K,    \
   $(subst _l,L,    \
   $(subst _m,M,    \
   $(subst _n,N,    \
   $(subst _o,O,    \
   $(subst _p,P,    \
   $(subst _q,Q,    \
   $(subst _r,R,    \
   $(subst _s,S,    \
   $(subst _t,T,    \
   $(subst _u,U,    \
   $(subst _v,V,    \
   $(subst _w,W,    \
   $(subst _x,X,    \
   $(subst _y,Y,    \
   $(subst _z,Z,$(1)))))))))))))))))))))))))))))))))))))))))))))))))))))))
endef



all:    $(call makeCamel,$(FILES))



define makeTarget
 $(2):: $(1)
    protoc --java_out=$(2) $(1)

endef
$(foreach x,$(FILES),$(eval $(call makeTarget,$x,$(call makeCamel,$x))))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/946307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档