Sysprogs forums › Forums › VisualGDB › Getting warning about overriding recipe and ignoring old recipe on library proje
- This topic has 4 replies, 2 voices, and was last updated 8 years, 4 months ago by CurtisHx.
-
AuthorPosts
-
July 22, 2016 at 19:31 #8693CurtisHxParticipant
I have a library project that is producing 2 warnings when building. Here are the warnings:
Makefile:147: warning: overriding recipe for target 'Release/Drivers.a' Makefile:144: warning: ignoring old recipe for target 'Release/Drivers.a'
Admittedly, I am not exactly fluent in makefiles. How can I track down what is causing those warnings? This is the block of the makefile that’s causing the problems.
ifeq ($(TARGETTYPE),STATIC) $(BINARYDIR)/$(TARGETNAME): $(all_objs) $(AR) -r $@ $^ endif
Here’s the entire makefile.
#Generated by VisualGDB project wizard. #Note: VisualGDB will automatically update this file when you add new sources to the project. #All other changes you make in this file will be preserved. #Visit http://visualgdb.com/makefiles for more details #VisualGDB: AutoSourceFiles #<--- remove this line to disable auto-updating of SOURCEFILES and EXTERNAL_LIBS TARGETNAME := Drivers.a #TARGETTYPE can be APP, STATIC or SHARED TARGETTYPE := STATIC to_lowercase = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1)))))))))))))))))))))))))) CONFIG ?= DEBUG CONFIGURATION_FLAGS_FILE := $(call to_lowercase,$(CONFIG)).mak include $(CONFIGURATION_FLAGS_FILE) #LINKER_SCRIPT defined inside the configuration file (e.g. debug.mak) should override any linker scripts defined in shared .mak files CONFIGURATION_LINKER_SCRIPT := $(LINKER_SCRIPT) include $(ADDITIONAL_MAKE_FILES) ifneq ($(CONFIGURATION_LINKER_SCRIPT),) LINKER_SCRIPT := $(CONFIGURATION_LINKER_SCRIPT) endif ifneq ($(LINKER_SCRIPT),) LDFLAGS += -T$(LINKER_SCRIPT) endif ifeq ($(BINARYDIR),) error: $(error Invalid configuration, please check your inputs) endif SOURCEFILES := ProprietaryRfDriver.cpp EXTERNAL_LIBS := EXTERNAL_LIBS_COPIED := $(foreach lib, $(EXTERNAL_LIBS),$(BINARYDIR)/$(notdir $(lib))) CFLAGS += $(COMMONFLAGS) CXXFLAGS += $(COMMONFLAGS) ASFLAGS += $(COMMONFLAGS) LDFLAGS += $(COMMONFLAGS) CFLAGS += $(addprefix -I,$(INCLUDE_DIRS)) CXXFLAGS += $(addprefix -I,$(INCLUDE_DIRS)) CFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS)) CXXFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS)) ASFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS)) CXXFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS)) CFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS)) LDFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS)) LDFLAGS += $(addprefix -L,$(LIBRARY_DIRS)) ifeq ($(GENERATE_MAP_FILE),1) LDFLAGS += -Wl,-Map=$(BINARYDIR)/$(basename $(TARGETNAME)).map endif LIBRARY_LDFLAGS = $(addprefix -l,$(LIBRARY_NAMES)) ifeq ($(IS_LINUX_PROJECT),1) RPATH_PREFIX := -Wl,--rpath='$$ORIGIN/../ LIBRARY_LDFLAGS += $(EXTERNAL_LIBS) LIBRARY_LDFLAGS += -Wl,--rpath='$$ORIGIN' LIBRARY_LDFLAGS += $(addsuffix ',$(addprefix $(RPATH_PREFIX),$(dir $(EXTERNAL_LIBS)))) ifeq ($(TARGETTYPE),SHARED) CFLAGS += -fPIC CXXFLAGS += -fPIC ASFLAGS += -fPIC LIBRARY_LDFLAGS += -Wl,-soname,$(TARGETNAME) endif ifneq ($(LINUX_PACKAGES),) PACKAGE_CFLAGS := $(foreach pkg,$(LINUX_PACKAGES),$(shell pkg-config --cflags $(pkg))) PACKAGE_LDFLAGS := $(foreach pkg,$(LINUX_PACKAGES),$(shell pkg-config --libs $(pkg))) CFLAGS += $(PACKAGE_CFLAGS) CXXFLAGS += $(PACKAGE_CFLAGS) LIBRARY_LDFLAGS += $(PACKAGE_LDFLAGS) endif else LIBRARY_LDFLAGS += $(EXTERNAL_LIBS) endif LIBRARY_LDFLAGS += $(ADDITIONAL_LINKER_INPUTS) all_make_files := $(firstword $(MAKEFILE_LIST)) $(CONFIGURATION_FLAGS_FILE) $(ADDITIONAL_MAKE_FILES) ifeq ($(STARTUPFILES),) all_source_files := $(SOURCEFILES) else all_source_files := $(STARTUPFILES) $(filter-out $(STARTUPFILES),$(SOURCEFILES)) endif source_obj1 := $(all_source_files:.cpp=.o) source_obj2 := $(source_obj1:.c=.o) source_obj3 := $(source_obj2:.s=.o) source_obj4 := $(source_obj3:.S=.o) source_obj5 := $(source_obj4:.cc=.o) source_objs := $(source_obj5:.cxx=.o) all_objs := $(addprefix $(BINARYDIR)/, $(notdir $(source_objs))) PRIMARY_OUTPUTS := ifeq ($(GENERATE_BIN_FILE),1) PRIMARY_OUTPUTS += $(BINARYDIR)/$(basename $(TARGETNAME)).bin endif ifeq ($(GENERATE_IHEX_FILE),1) PRIMARY_OUTPUTS += $(BINARYDIR)/$(basename $(TARGETNAME)).ihex endif ifeq ($(PRIMARY_OUTPUTS),) PRIMARY_OUTPUTS := $(BINARYDIR)/$(TARGETNAME) endif all: $(PRIMARY_OUTPUTS) $(BINARYDIR)/$(basename $(TARGETNAME)).bin: $(BINARYDIR)/$(TARGETNAME) $(OBJCOPY) -O binary $< $@ $(BINARYDIR)/$(basename $(TARGETNAME)).ihex: $(BINARYDIR)/$(TARGETNAME) $(OBJCOPY) -O ihex $< $@ ifneq ($(LINKER_SCRIPT),) $(BINARYDIR)/$(TARGETNAME): $(LINKER_SCRIPT) endif ifeq ($(TARGETTYPE),APP) $(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) $(LD) -o $@ $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP) endif ifeq ($(TARGETTYPE),SHARED) $(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) $(LD) -shared -o $@ $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP) endif ifeq ($(TARGETTYPE),STATIC) $(BINARYDIR)/$(TARGETNAME): $(all_objs) $(AR) -r $@ $^ endif -include $(all_objs:.o=.dep) clean: ifeq ($(USE_DEL_TO_CLEAN),1) cmd /C del /S /Q $(BINARYDIR) else rm -rf $(BINARYDIR) endif $(BINARYDIR): mkdir $(BINARYDIR) #VisualGDB: FileSpecificTemplates #<--- VisualGDB will use the following lines to define rules for source files in subdirectories $(BINARYDIR)/%.o : %.cpp $(all_make_files) |$(BINARYDIR) $(CXX) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) $(BINARYDIR)/%.o : %.c $(all_make_files) |$(BINARYDIR) $(CC) $(CFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) $(BINARYDIR)/%.o : %.S $(all_make_files) |$(BINARYDIR) $(CC) $(CFLAGS) $(ASFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) $(BINARYDIR)/%.o : %.s $(all_make_files) |$(BINARYDIR) $(CC) $(CFLAGS) $(ASFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) $(BINARYDIR)/%.o : %.cc $(all_make_files) |$(BINARYDIR) $(CC) $(CFLAGS) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) $(BINARYDIR)/%.o : %.cxx $(all_make_files) |$(BINARYDIR) $(CC) $(CFLAGS) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) #VisualGDB: GeneratedRules #<--- All lines below are auto-generated
- This topic was modified 8 years, 5 months ago by CurtisHx.
July 24, 2016 at 19:17 #8695supportKeymasterHi,
The Makefile looks normal, so it’s hard to say what is causing this. Perhaps it has some strange inclusion loop and ends up included twice?
Can you try re-creating the project with the VisualGDB wizard and check if the warning re-appears?
July 25, 2016 at 13:16 #8696CurtisHxParticipantThe strange inclusion loop is entirely possible. I made some significant changes to the project in order to support unit testing (this was before the 5.2 release with Unit Testing support).
However, it has something to do with the project output being set for Static Library. I changed it to executable, and those two warnings went away.
July 25, 2016 at 15:14 #8698supportKeymasterHi,
It’s still hard to say what exactly would be causing it. Normally the 2 line numbers reported by Make would point to the old and new definition, but in your example one of them points at an empty line (or a different Makefile). You can try commenting out the mentioned rule definition and running “make -d Release/Drivers.a” explicitly. If the build succeeds, examine the debug output generated by the -d option to see where else did it find the rule to build the file.
August 2, 2016 at 13:31 #8729CurtisHxParticipantFigured it out. I had a linker script specified. This project was originally an executable that got switched to a static library, and the linker script was still included. I removed the linker script from the VisualGDB Project Properties -> Embedded Project page and the VisualGDB Project Properties -> Makefile settings page, and those warnings went away.
-
AuthorPosts
- You must be logged in to reply to this topic.