制作文档说明复杂条件的语法如下:
但我不明白如何使用这个语法来重写下面的代码:
conditional-directive-one
text-if-one-is-true
else conditional-directive-two
text-if-two-is-true
else
text-if-one-and-two-are-false
endif
但我不明白如何使用这个语法来重写下面的代码:
ifeq ($(option), 1)
CC=gcc
@echo use gcc
else ifeq($(option), 2)
CC=clang
@echo use clang
else
CC=mipsel-linux-gcc
@echo use mipsel-linux-gcc
endif
#first target
foo: ;
else ifeq($(option), 2)
中的ifeq
后面需要加一个空格。其次,这种语法是在GNU make的3.81版本中添加的,所以如果你使用的是旧版本,它是不可用的。 - MadScientistifeq
之后省略了空格,并且我的text-if-one-is-true
、text-two-is-true
、text-if-one-and-two-are-false
块包含了第一个目标之前的配方(这里没有显示)。这两点导致我的Makefile不能工作。 - Cauchy Schwarzifeq
之后添加一个空格,而不是省略一个空格。提问时,请展示实际问题的最小示例,而不是可能无法显示问题的不同示例。此外,请剪切并粘贴您看到的确切错误消息。在您的评论中,您提到“在第一个目标之前包含配方”,这是一种完全不同类型的错误,只有上面显示的示例makefile无法发生。 - MadScientistifeq
之后我漏掉了一个空格,导致make文件无法工作。而且我不知道在第一个目标之前不能编写recipes,所以我从先前版本的代码中将它们删除了。 - Cauchy Schwarz