Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile表示,当我调用某个目标时,它会针对这种情况更改变量的值_Makefile_Gnu Make - Fatal编程技术网

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

好的,我在makefile中有一个DEBUG:=-g变量。问题是我想调用一个名为Release的目标,这样我就可以为Release编译代码(基本上不需要额外的调试代码)。我以为我可以简单地在规则命令中重置debug的值,但它给了我一个erro(错误127)。另外,我将如何使我的makefile简单地运行正常的依赖关系?谢谢

使用:

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 */*/*~ */*~ *~