相关疑难解决方法(0)

Makefile ifeq逻辑或

如何使用make的ifeq运算符执行逻辑OR ?

例如,我有(简化):

ifeq ($(GCC_MINOR), 4)
    CFLAGS += -fno-strict-overflow
endif
ifeq ($(GCC_MINOR), 5)
    CFLAGS += -fno-strict-overflow
endif
Run Code Online (Sandbox Code Playgroud)

但想巩固这些界限.

(是的,是的,autotools,配置等等;对于当前的情况太过苛刻,想在这里保留Makefile中的所有内容)

[与此问题逻辑相反:如何在'ifeq'语句中使用多个条件 ]

makefile

83
推荐指数
4
解决办法
12万
查看次数

如何使用if /或/和函数检查变量是否等于两个值之一

在GNU makefile中,如果输入变量等于两个值中的一个,我想将输出变量设置为一个值(假设为"true"),如果输入变量不等于另一个值("false").

感谢这个SO答案,我已经了解了这些andor功能,不久之后我就找到了这个if功能.这些函数似乎在我的make版本中可用,所以我想使用它们.我想写这样的东西:

TEST_INPUT = `hostname`
TEST_OUTPUT = $(if $(or $(eq $(TEST_INPUT),hal9000),
                        $(eq $(TEST_INPUT),pipboy)),true,false)
Run Code Online (Sandbox Code Playgroud)

不幸的是我不能,因为我找不到任何明显形式的预期eq功能.我能够使用该filter功能实现我想要的:

TRUE_HOSTS = hal9000 pipboy
TEST_OUTPUT = $(if $(filter $(TEST_INPUT),$(TRUE_HOSTS)),true,false)
Run Code Online (Sandbox Code Playgroud)

subst功能:

TEST_OUTPUT = $(if $(and $(subst hal9000,,$(TEST_INPUT)),
                         $(subst pipboy,,$(TEST_INPUT))),
                   false,true)
Run Code Online (Sandbox Code Playgroud)

但对我来说,它不是一个漂亮的外观也不是可读的代码.是否有更接近第一个示例的解决方案(使用不存在eq函数的解决方案)?也许我没有达到目的if,and而且or功能完全没有?

gnu-make

16
推荐指数
3
解决办法
1万
查看次数

'ifneq'是否有逻辑OR运算符?

是否有'ifneq ... endif'语句的逻辑OR运算符?

也就是说,如果定义了变量'var1'或'var2',我不想执行某些语句.像这样的东西:

ifneq ($(WNDAP660),y) OR $(WNADAP620),y))
...
endif
Run Code Online (Sandbox Code Playgroud)

我试过ifneq ($(WNDAP660),$(filter $(WNADAP620),y y)),但它没有用.

makefile

14
推荐指数
1
解决办法
2万
查看次数

大于Makefile中的字符串比较

如何在Makefile中表达以下逻辑?

if $(XORG_VERSION) > "7.7"
   <do some thing>
fi
Run Code Online (Sandbox Code Playgroud)

Makefile的条件部分仅提供ifeq或ifneq.

makefile

11
推荐指数
2
解决办法
5116
查看次数

在 gnu Makefile 中组合多个 ifeq 和 ifneq

如果语法类似于,如何添加多个选择

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 语句中没有等式。

makefile

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

标签 统计

makefile ×4

gnu-make ×1