#### Makefile.header ####
ifndef Hello
C_LINK = -switchOne
else
C_LINK = $(Hello)
endif
#### Makefile ####
...
Hello=
...
include Makefile.header
...
问题>文件Makefile
包括文件Makefile.header
。我想向用户提供一个选项,以便他们可以自定义C_LINK
,禁用默认C_LINK
或使用预定义的C_LINK
。
情况1>自定义开关
用户可以为Hello
提供一个值,以自定义C_LINK
的值。
例如,
Hello = -abc -def
情况2>使用默认开关
用户可以通过在Makefile中未定义C_LINK
变量来使用默认值Hello
。
情况3>禁用默认开关
用户可以定义没有值的变量Hello
来禁用C_LINK
。我尝试使用以下方法,但不起作用。
Hello =
编译器将变量Hello
视为未定义。
问题>有没有一种方法可以定义具有空值的变量?
谢谢
答案 0 :(得分:1)
如果您使用的是 GNU Make
,则可以使用?=
运算符,如下所示:
Default_Value ?= MainDefault
Value ?= $(Default_Value)
然后在包含的makefile中,可以通过以下不同方式设置选项:
# option #1
Value := -abc -def
或
# option #2 (do nothing)
或
#option #3 (clear default)
Default_Value :=
现在# option #1
设置了Value,因此Makefile不会更改它。
此外# option #2
也不执行任何操作,因此Makefile将添加其自己的默认值。
然后# option #3
将默认值设置为空白,以便Makefile将空白添加到Value
。