小编Pet*_*ith的帖子

makefile中有条件的变量?

显然 GNU Make 条件中没有布尔类型,所以这似乎是最好的解决方案:

$(DEF_TARGET):
    if [ "$(CHECK)" != "y" ]; then \
            var=foo; \
            $(if $(filter foo,$(var)),result=true,result=false); \
    fi
Run Code Online (Sandbox Code Playgroud)

问题是,无论是var=foo还是var=barresult永远都是false。替换$(var)foobar将产生正确的结果。

为什么这不起作用?有没有更好的解决问题的方法?

使用命令运行以下 makefile make -f make.txt

.PHONY: all
all:
     X=aaa; \
     Y=aaa; \
     if [[ '$(filter $(X),$(Y))' ]]; then echo "matched!"; else echo "not matched!"; fi
Run Code Online (Sandbox Code Playgroud)

输出:

X=aaa; \
Y=aaa; \
if [[ '' ]]; then echo "matched!"; else echo "not matched!"; fi
not matched! …
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make

1
推荐指数
1
解决办法
7185
查看次数

标签 统计

gnu-make ×1

makefile ×1