0

/redis/deps/hiredis/Makefile

    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'?

4

2 回答 2

2

为了OPTIMIZATION?=-O3

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

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

于 2016-01-20T07:55:49.067 回答
0

GNU make 手册?=为操作员提供了此文本

变量还有另一个赋值运算符'?='。这称为条件变量赋值运算符,因为它仅在变量尚未定义时才有效。

所以,这个说法

OPTIMIZATION?=-O3

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

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

于 2017-07-30T12:22:22.737 回答