[英]GNU make ignores slash on cmd.exe
我在cmd.exe上使用GNU make遇到问题。 它以某种方式忽略dir
“ /”输出,并说没有规则。
$(foreach f,$(OBJS),$(eval $f : | $(dir $f)))
%/:
mkdir -p $@
所以我做了这个肮脏的黑客。
$(foreach f,$(OBJS),$(eval $f : | $(dir $f)D))
%/D:
mkdir -p $@
有更好的解决方案吗? 请不要告诉我把破碎的外壳扔掉。 我不使用外壳,但是其他人使用它。
据我所知,目标模式匹配与shell make无关,它们最终将用于运行配方目标。 它完全在内部完成。
那就是说,确切的makefile代码片段(使用OBJS := a/ao b/bo c/co
)对我来说适用于CentOS 5上的make OBJS := a/ao b/bo c/co
和4.1。(我没有Windows上的make可以测试。 )因此,这里可能涉及特定于操作系统的内容。
您可以尝试删除/
并仅使用%
作为目标?
综上所述,更好的解决方案可能是将目录组件分配给变量并将该变量用作目标。
DIRS :=
$(foreach f,$(OBJS),$(eval $f : | $(dir $f)) $(eval DIRS += $(dir $f)))
$(DIRS):
mkdir -p $@
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.