首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Makefile中意外处理的变量

Makefile中意外处理的变量
EN

Stack Overflow用户
提问于 2020-12-19 03:34:00
回答 1查看 45关注 0票数 0

我在下面有一个Makefile,它将$(CC)变量视为cc。变量$(BB)如预期的那样被视为gcc。为什么将$(CC)视为cc而不是gcc

代码语言:javascript
复制
#
# Makefile

BB ?= gcc
CC ?= gcc
LVGL_DIR ?= ${shell pwd}
CFLAGS ?= -Wall -Wshadow -Wundef -Wmaybe-uninitialized -O3 -g0 -I$(LVGL_DIR)/
# LDFLAGS ?= -lSDL2 -lm
LDFLAGS ?= -lm
BUILDDIR := build
BINDIR := bin
BIN = $(BINDIR)/output


#Collect the files to compile
MAINSRC = ./main.c

include $(LVGL_DIR)/lvgl/lvgl.mk
include $(LVGL_DIR)/lv_drivers/lv_drivers.mk

#include 
INC := -I . -I lvgl -I lv_drivers

#CSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c

OBJEXT ?= .o

AOBJS = $(ASRCS:.S=$(OBJEXT))
COBJS = $(CSRCS:.c=$(OBJEXT))
# AOBJS = $(patsubst %,%,$(ASRCS:.S=$(OBJEXT)))

#reference
# SOURCES := $(shell find . -type f -iname "*.$(SRCEXT)" )
# OBJECTS := $(patsubst %,%,$(SOURCES:.$(SRCEXT)=.o))

MAINOBJ = $(MAINSRC:.c=$(OBJEXT))

SRCS = $(ASRCS) $(CSRCS) $(MAINSRC)
OBJS = $(AOBJS) $(COBJS)

## MAINOBJ -> OBJFILES

all: default
%.o: %.c
    @echo "TEST $(CC) $(BB) $<"
    $(CC) $(CFLAGS) $(INC) -c $< -o $@
    
    
default: $(AOBJS) $(COBJS) $(MAINOBJ)
    @mkdir -p $(BINDIR)
    $(CC) -o $(BIN) $(MAINOBJ) $(AOBJS) $(COBJS) $(LDFLAGS)

clean: 
    rm -f $(BIN) $(AOBJS) $(COBJS) $(MAINOBJ)

更新

如果我注释#CC ?= gcc,那么它仍然被视为cc。如果我运行命令echo $CC,则不会打印任何内容。那么是谁将CC设置为cc的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-19 16:25:09

代码语言:javascript
复制
BB ?= gcc
CC ?= gcc

all:
    echo $(CC)
    echo $(BB)

会工作得很好

代码语言:javascript
复制
> make
echo cc
cc         # default value is being picked up
echo gcc
gcc

但是,如果您在环境中已经有了CC,或者您将CC作为参数传递,那么它将选择现有值

代码语言:javascript
复制
> make CC=aa
echo aa
aa
echo gcc
gcc

或者像这样

代码语言:javascript
复制
> export CC=dd
> make
echo dd
dd
echo gcc
gcc

此外,请注意,GNU Make在其src/default.c内部定义了许多默认值- CC就是其中之一。

代码语言:javascript
复制
#ifdef GCC_IS_NATIVE
    "CC", "gcc",
#else
    "CC", "cc",
#endif
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65362956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档