繁体   English   中英

带变量的 Makefile、条件和通配符

[英]Makefile, conditional and wildcard with variables

我的 makefile 有问题。 我想要一个“主”目标,它可以自动处理各种目录并将它们复制到特定位置。 但不知何故,带有通配符的 ifneq 条件无法正常工作,无论条件是否满足,我总是得到相同的结果。

我正在尝试:

# Basically the same thing for all targets
% :
ifeq ($(wildcard $(TOP)/flow/$@),)
    $(error Directory $(TOP)/flow/$@ not found. Aborting. Debug: $(wildcard $(TOP)/flow/$@))
else
    $(error Directory $(TOP)/flow/$@ found!. Debug: $(wildcard $(TOP)/flow/$@))
endif

例如,在 $(TOP)/flow 中存在一个目录core但不存在pwr Make 目标继续进行,就好像它们都存在一样。

➜  work ✗ make core
Makefile:20: *** Directory TOPFOLDER/flow/core found!. Debug: TOPFOLDER/flow/core.  Stop.
➜  work ✗ make pwr 
Makefile:20: *** Directory TOPFOLDER/flow/pwr found!. Debug: .  Stop.

为什么会这样? 看不到我在这里做错了什么。

感谢您的帮助!

在评估ifeq时变量$@为空。

可能改用运行时检查:

% :
    test -d $(TOP)/flow/$@/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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