条件执行即,通过变量的值,来控制make的执行和忽略。
条件执行只能控制makefile的make语法部分,不能控制shell部分
1.一个例子
… libs_for_gcc = -lgnu normal_libs = …… foo: $(objects) ifeq ($(CC),gcc) $(CC) -o foo $(objects) $(libs_for_gcc) else $(CC) -o foo $(objects) $(normal_libs) endif ……
2.ifeq,ifneq,
`ifeq (ARG1, ARG2)‘ `ifeq ‘ARG1‘ ‘ARG2‘‘ `ifeq "ARG1" "ARG2"‘ `ifeq "ARG1" ‘ARG2‘‘ `ifeq ‘ARG1‘ "ARG2"‘
ifdef,ifndef
`ifdef VARIABLE-NAME‘
判断变量是否为空
3.标记条件语句
archive.a: ... ifneq (,$(findstring t,$(MAKEFLAGS))) +touch archive.a +ranlib -t archive.a else ranlib archive.a endif 这个条件语句判断 make 的命令行参数中是否包含“ -t”(用来更新目标文件的时间戳)。 根据命令行参数情况完成对“ archive.a”执行不同的操作。命令行前的“ +”的意思是 告诉 make,即使 make 使用了“ -t”参数,“ +”之后的命令都需要被执行。
《GNU_makefile》第七章——makefile的条件执行
原文:https://www.cnblogs.com/yangxinrui/p/12892423.html