如果语法类似于,如何添加多个选择
ifeq ($(VAR1),some-string)
Run Code Online (Sandbox Code Playgroud)
结合
ifneq ($(VAR2),some-other-string)
Run Code Online (Sandbox Code Playgroud)
再加上一些……
有一个班轮吗?喜欢(幻想代码):
ifeq $VAR1=some-string and not $VAR2=some-other-string
Run Code Online (Sandbox Code Playgroud)
我发现这个答案我不清楚,因为那里的 ifeq 语句中没有等式。
不,and条件没有运算符(但有一个and可以在条件中使用的函数)。的if,and并且or有条件的功能考虑空字符串是错误的,并且别的为真(只包含空格包括字符串)。您找到的答案中的第一个建议测试变量是否为空字符串。第二个测试是否定义了变量。在这两种情况下,它都不会测试它们的值是否等于引用字符串。这可能是您没有立即清楚的原因。
在您的(简单)情况下,您可以嵌套条件:
ifeq ($(VAR1),some-string)
ifneq ($(VAR2),some-other-string)
<do something>
endif
endif
Run Code Online (Sandbox Code Playgroud)
<do something> 当且仅当两个条件通过时才会考虑。
对于具有许多条件的复杂情况,您可以计算单个匹配变量:
MATCH1 := $(if $(strip $(VAR1)),$(patsubst some-string,,$(VAR1)),NO)
Run Code Online (Sandbox Code Playgroud)
变量MATCH1将取值:
NO如果VAR1未定义,则是空字符串或空格字符串,some-string,VAR1。因此,当且仅当 为空字符串VAR1 == some-string。同样适用于NOMATCH1:
MOMATCH1 := $(if $(strip $(VAR2)),$(patsubst some-other-string,,$(VAR2)),NO)
Run Code Online (Sandbox Code Playgroud)
NOMATCH1当且仅当 为非空VAR2 != some-other-string。
现在,您的主要条件可以使用条件函数表示:
ifeq ($(or $(MATCH1),$(MATCH2),...),)
ifneq ($(and $(NOMATCH1),$(NOMATCH2),...),)
<do something>
endif
endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7628 次 |
| 最近记录: |