我正在使用正斜杠分隔path组件使用每个目录的目标在Windows上进行recursion制作。 如果有人跑
> make foo/bar
它会运行良好。 但是,如果有人跑
> make foobar
它不会findbuild立的目标:
make: Nothing to be done for `foobar'.
我会喜欢它,如果我可以添加这样的东西到我的顶级Makefile:
汇编程序是否可以在Linux发行版之间移植?
使用免费工具开发轻量级(无运行时)基于Windows的GUI应用程序
如何使用printf显示off_t,nlink_t,size_t和其他特殊types?
Unity3D – 便携式HTTP客户端
在Windows上真正可移植的Haskell安装
MAKECMDGOALS = $(subst,/,$(MAKECMDGOALS))
但是这样的事情是行不通的。 MAKECMDGOALS只能被读取。 或者,即使我可以为我所有的常规目标制作反斜杠目标,例如:
$(DIRS): %: $(subst /,%)
但是这也是行不通的。 最好的方法是什么?
Windows和Linux之间的C ++可移植性
Windows相当于Linux命名空间(每进程文件系统挂载)?
免费的,可移植的,全部包含在一起,基于php的Apache服务器?
在Linux上的便携式JRE – 可能吗?
在Perl脚本中播放声音
我已经想出了一个相当不错的方式来处理这个,而不是诉诸脚本来包装make:
# $(call bstarget,foo foo/bar baz frob/niz) # will result in the following targets being defined in place: # foobar: foo/bar # brobniz: from/niz bstarget = $(eval $(foreach TARGET,$1,$(if $(findstring /,$(TARGET)),$(call bstargeteval,$(subst /,$(TARGET))))) define bstargeteval $1: $2 endef
然后它可以在我的Makefile中调用$(调用bstarget,$(DIRS))
我想你需要在你的subst表达式中使用4个反斜杠(转义)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。