检查Makefile中的gcc版本?

我想使用一些gcc警告开关,在旧gcc版本不可用(例如。-Wtype-limits)。

有一个简单的方法来检查gcc版本,只添加那些额外的选项,如果使用最近的gcc?

我不会说它的容易,但你可以使用GNU make的shell函数执行一个shell命令,如gcc –version,然后使用ifeq条件表达式检查版本号并正确设置CFLAGS变量。

这里有一个快速示例makefile:

CC = gcc
GCCVERSION = $(shell gcc --version | grep ^gcc | sed 's/^.* //g')
CFLAGS = -g

ifeq "$(GCCVERSION)" "4.4.3"
    CFLAGS += -Wtype-limits
endif

all:
        $(CC) $(CFLAGS) prog.c -o prog

编辑:没有ifgt。但是,您可以使用shell expr命令做比大于比较。这里有一个例子

CC = gcc
GCCVERSIONGTEQ4 := $(shell expr `gcc -dumpversion | cut -f1 -d.` \>= 4)
CFLAGS = -g

ifeq "$(GCCVERSIONGTEQ4)" "1"
    CFLAGS += -Wtype-limits
endif

all:
        $(CC) $(CFLAGS) prog.c -o prog
翻译自:https://stackoverflow.com/questions/5188267/checking-the-gcc-version-in-a-makefile

转载注明原文:检查Makefile中的gcc版本?