【发布时间】:2013-10-21 04:39:53
【问题描述】:
ifeq ($(SYSTEM),WINDOWS)
# need to change something here :
RM = @(if exist "$(subst /,\,$(DIRECTORY))" rmdir /s /q $(subst/,\,$(DIRECTORY))))
else
RM := @rm -rf
endif
clean_1 :
$(RM) SOME/PATH/
clean_2 :
$(RM) SOME/PATH/
如何将“SOME/PATH/”替换为“DIRECTORY”? 这是否可以在不改变代码结构的情况下实现?
附:我不能在不检查文件的情况下使用 rmdir,因为它会产生错误。
更新。我这样做了:
ifeq ($(SYSTEM),WINDOWS)
RM = @(if exist "$(subst /,\,$1)" rmdir /s /q $(subst/,\,$1)))
else
RM = @rm -rf $1
endif
clean_% :
$(call RM, SOME/PATH/)
确实有效。感谢 Mark Galeck。
有没有办法通过替换 RM 变量而不更改 clean-target 命令来做到这一点?
【问题讨论】:
-
你有什么理由想要这样做吗?
-
无特殊原因。但我想知道,这可能吗?
-
是的,我添加到我的答案中。是的,你想列出每个干净目标的目录 - 我没有意识到这一点是愚蠢的。
标签: makefile