编译器选项意味着什么?和'?'后跟'= -03'

时间:2016-01-20 06:51:12

标签: makefile gnu-make hiredis

/ redis的/ DEPS / hiredis /生成文件

    CC:=$(shell sh -c 'type $(CC) >/dev/null 2>/dev/null && echo $(CC) ||      echo gcc')
    OPTIMIZATION?=-O3
    WARNINGS=-Wall -W -Wstrict-prototypes -Wwrite-strings
    DEBUG?= -g -ggdb

编译器选项意味着什么?和'?'后跟'= -03'?

2 个答案:

答案 0 :(得分:2)

代表OPTIMIZATION?=-O3

  1. 如果尚未定义变量OPTIMIZATION,则OPTIMIZATION的值为-O3;

  2. 另一方面,如果已定义变量OPTIMIZATION,则会跳过此语句,OPTIMIZATION将保留其先前的值

答案 1 :(得分:0)

GNU make manual?=运算符

的此文本
  

变量有另一个赋值运算符'?='。这是   称为条件变量赋值运算符,因为它只有   如果变量尚未定义,则会产生影响。

所以,这句话

OPTIMIZATION?=-O3

表示如果已定义OPTIMIZATION,请忽略它,如果没有,请定义它并指定值-03

编译器标志-03表示在优化级别3编译。