Makefile表示,当我调用某个目标时,它会针对这种情况更改变量的值
好的,我在makefile中有一个DEBUG:=-g变量。问题是我想调用一个名为Release的目标,这样我就可以为Release编译代码(基本上不需要额外的调试代码)。我以为我可以简单地在规则命令中重置debug的值,但它给了我一个erro(错误127)。另外,我将如何使我的makefile简单地运行正常的依赖关系?谢谢使用:Makefile表示,当我调用某个目标时,它会针对这种情况更改变量的值,makefile,gnu-make,Makefile,Gnu Make,好的,我在makefile中有一个DEBUG:=-g变量。问题是我想调用一个名为Release的目标,这样我就可以为Release编译代码(基本上不需要额外的调试代码)。我以为我可以简单地在规则命令中重置debug的值,但它给了我一个erro(错误127)。另外,我将如何使我的makefile简单地运行正常的依赖关系?谢谢使用: CC:=arm none eabi- CCC:=$(CC)通用条款 综合资本账户:=$(CC)作为 调试:=-g CFLAGS:=-c-mapcs FLAGSDEPEN
CC:=arm none eabi-
CCC:=$(CC)通用条款
综合资本账户:=$(CC)作为
调试:=-g
CFLAGS:=-c-mapcs
FLAGSDEPEND:=-MM-MF
LD:=$(CC)LD
#$@->nome do alvo..$^/$?独立列表..$*继续以%的价格……美元计算继续前进
#奥法泽尔-包括美元(视情况而定)以换取一份证明文件,“——“提供一份最重要的服务。”
#$(通配符*.c)->无格式的意大利面(*.c)
#$(patsubstitu%.o,%.d,$@)->取代基tudo em$@no formato%.o段落%.d
#意大利面
DEPDIR:=依赖于/
OBJDIR:=对象/
SOURCECDIR:=源/C/
SOURCEADIR:=源/程序集/
LIBDIR:=库/
HEADIR:=标题/
#家属
SOURCEC:=$(通配符$(SOURCECDIR)*.c)#Todos ficheiros*.c
SOURCEA:=$(通配符$(SOURCEADIR)*.S)#Todos os ficheiros*.S
OBJC:=$(patsubst$(SOURCECDIR)%.c,$(OBJDIR)%.o,$(SOURCEC))#Todos os ficheiros*.o gerados a partir de*.c
OBJA:=$(patsubst$(SOURCEADIR)%.S,$(OBJDIR)%.o,$(SOURCEA))#Todos os ficheiros*.o gerados a partir de*.S
取决于:=$(patsubst$(OBJDIR)%.o,$(DEPDIR)%.d,$(OBJC))#Todos os ficheiros*.d gerados partir dos*.o gerados*.c
调试:$(OBJC)$(OBJA)
发布:调试:=
发行:$(OBJC)$(OBJA)
@回显编译器emmodo$@
$(OBJDIR)%.o:$(SOURCECDIR)%.c
@回显编译器$*.c$@
@echo$(patsubst$(OBJDIR)%.o,$(DEPDIR)%.d,$@)
@$(CCC)$(调试)$(CFLAGS)$<$(FLAGSDEPEND)$(patsubst$(OBJDIR)%.o,$(DEPDIR)%.d,$@)
@$(CCC)$(调试)$(CFLAGS)$<-o$@
-包括美元(视情况而定)
$(OBJDIR)%.o:$(SOURCEADIR)%.S
@回显编译器$*.S
@$(CCAS)$(调试)$<-o$@
.假冒:干净
清洁:
@回显一个删除对象e executáveis
@rm-rf$(OBJDIR)/*.o*.axf$(DEPDIR)/*.d
@${make cleanTemp}
清洁温度:
@回声移除器
@rm-rf*/*/*~*/*~*~
更改头文件时,我的makefile没有更新对象文件。每次编译时我都会创建依赖项文件,但似乎makefile忽略了它
DEBUG:= -g
Release: DEBUG:=
Release:
@echo DEBUG is $(DEBUG)
other:
@echo DEBUG is $(DEBUG)
CC := arm-none-eabi-
CCC :=$(CC)gcc
CCAS :=$(CC)as
DEBUG :=-g
CFLAGS := -c -mapcs
FLAGSDEPEND :=-MM -MF
LD := $(CC)ld
# $@ -> nome do alvo .. $^/$? lista de dependencias .. $* contêm o valor de % .. $< contêm a primeira dependencia
# Ao fazer -include $(DEPENDS) estou a forçar a verificação das dependências, "-" serve para que da primeira vez não ocorra um erro
# $(wildcard *.c) -> Pesquisa na pasta indicada por todos os ficheiros no formato indicado (*.c)
# $(patsubst %.o,%.d,$@) -> substitui tudo em $@ no formato %.o para %.d
# Pastas
DEPDIR := Depends/
OBJDIR := Object/
SOURCECDIR := Source/C/
SOURCEADIR := Source/Assembly/
LIBDIR := Library/
HEADIR := Header/
# Dependencias
SOURCEC := $(wildcard $(SOURCECDIR)*.c) # Todos ficheiros *.c
SOURCEA := $(wildcard $(SOURCEADIR)*.S) # Todos os ficheiros *.S
OBJC := $(patsubst $(SOURCECDIR)%.c,$(OBJDIR)%.o,$(SOURCEC)) # Todos os ficheiros *.o gerados a partir de *.c
OBJA := $(patsubst $(SOURCEADIR)%.S,$(OBJDIR)%.o,$(SOURCEA)) # Todos os ficheiros *.o gerados a partir de *.S
DEPENDS := $(patsubst $(OBJDIR)%.o,$(DEPDIR)%.d,$(OBJC)) # Todos os ficheiros *.d gerados partir dos *.o gerados dos *.c
debug: $(OBJC) $(OBJA)
release: DEBUG:=
release: $(OBJC) $(OBJA)
@echo A compilar em modo $@
$(OBJDIR)%.o: $(SOURCECDIR)%.c
@echo A compilar $*.c $@
@echo $(patsubst $(OBJDIR)%.o,$(DEPDIR)%.d,$@)
@$(CCC) $(DEBUG) $(CFLAGS) $< $(FLAGSDEPEND) $(patsubst $(OBJDIR)%.o,$(DEPDIR)%.d,$@)
@$(CCC) $(DEBUG) $(CFLAGS) $< -o $@
-include $(DEPENDS)
$(OBJDIR)%.o: $(SOURCEADIR)%.S
@echo A compilar $*.S
@$(CCAS) $(DEBUG) $< -o $@
.PHONY: clean
clean:
@echo A remover objectos e executáveis
@ rm -rf $(OBJDIR)/*.o *.axf $(DEPDIR)/*.d
@ ${make cleanTemp}
cleanTemp:
@echo A remover ficheiros temporarios
@ rm -rf */*/*~ */*~ *~