繁体   English   中英

GNU make忽略cmd.exe上的斜杠

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM