Makefile If-Then Else和循环
有人可以解释如何使用if-then语句和Makefiles中的循环? 我似乎无法find任何好例子的文档。
条件表格
简单
conditional-directive text-if-true endif
适度复杂
conditional-directive text-if-true else text-if-false endif
更复杂
conditional-directive text-if-one-is-true else conditional-directive text-if-true else text-if-false endif endif
有条件的指令
如果相等语法
ifeq (arg1, arg2) ifeq 'arg1' 'arg2' ifeq "arg1" "arg2" ifeq "arg1" 'arg2' ifeq 'arg1' "arg2"
如果不等于语法
ifneq (arg1, arg2) ifneq 'arg1' 'arg2' ifneq "arg1" "arg2" ifneq "arg1" 'arg2' ifneq 'arg1' "arg2"
如果定义的语法
ifdef variable-name
如果没有定义语法
ifndef variable-name
foreach函数
foreach函数语法
$(foreach var, list, text)
foreach语义
对于“list”中的每个以空格分隔的词,由“var”命名的variables被设置为该词并且文本被执行。
这是一个例子,如果:
ifeq ($(strip $(OS)),Linux) PYTHON = /usr/bin/python FIND = /usr/bin/find endif
请注意,这带有一个警告,即Make的不同版本语法略有不同,其中没有一个似乎logging得很好。
你有没有尝试过GNU make文档 ? 它有一个关于条件的例子。
你确实看到了很多的循环,但通常不需要。 下面是一个例子,说明如何执行一个for循环而不使用shell
LIST_OF_THINGS_TO_DO = do_this do_that $(LIST_OF_THINGS_TO_DO): run $@ > $@.out SUBDIRS = snafu fubar $(SUBDIRS): cd $@ && $(MAKE)