Makefile-使用通配符检测文件

Makefile-使用通配符检测文件,makefile,wildcard,Makefile,Wildcard,下面是我正确设置路径的代码\u PROJET var-> PATH_PROJET = 0 -projet-build-path: ifneq ($(wildcard $(PATH_CURR)/.path_root), ) $(eval PATH_PROJET = .) endif ifneq ($(wildcard $(PATH_CURR)/../.path_root), ) $(eval PATH_PROJET = ..) endif -projet-build-path-

下面是我正确设置路径的代码\u PROJET var->

PATH_PROJET = 0

-projet-build-path:
ifneq ($(wildcard $(PATH_CURR)/.path_root), )
    $(eval PATH_PROJET = .)
endif
ifneq ($(wildcard $(PATH_CURR)/../.path_root), )
    $(eval PATH_PROJET = ..)
endif

-projet-build-path-verif:
ifeq ($(PATH_PROJET),0)
    $(error Cant find $(PATH_PROJET)/.path_root)
endif
如果我使用PATH_PROJET变量进行回显,我会得到正确的设置(.or..取决于),但是当我尝试在第二条规则“-PROJET build PATH verif”中使用相同的变量时,它会使用该变量“0”的第一个值,而不是我刚才设置的值。如果我在$(通配符)中使用var,这也是同样的问题


有人能解决这个问题吗?

我终于找到了另一种方法。我不知道在规则之外可以使用if,所以我用这种方式设置var no(在所有规则之外)


经过一些测试后,我想这是关于如何设置PATH_PROJET变量的问题。我试着在Makefile的开头这样写:PATH_PROJET=。。然后是第二个。因此,我认为$(通配符)可以在正常设置时使用var,但不能使用$(eval)命令。有没有其他方法来设置这个var或使它工作?如果它现在工作,那么你问什么?它现在不工作。只要我手动设置变量。我已经编辑了我的第一篇文章,让它更清楚。
ifneq ($(wildcard $(PATH_CURR)/.path_root), )
    PATH_PROJET = .
else
ifneq ($(wildcard $(PATH_CURR)/../.path_root), )
    PATH_PROJET = ..
else
    PATH_PROJET = 0
endif
endif