2016-07-20 11 views
0

Ich benutze Visual Studio mit VisualGDB und ich habe rund 2000 .c Dateien Die Visualgdb bietet einige Vorlage Make-Dateien. Das Problem ist, dass, wenn es zu viele Dateien sind gefunden ich dieses Fenster 10 Begrenzungsfehler (Befehl ist zu lang)Wie ändert man eine make-Datei, die von mingw verwendet wird, so dass die Linker-Eingabe eine Datei mit Objekten ist?

process_begin: CreateProcess(C:\SysGCC\mingw32\bin\g++.exe, C:/SysGCC/mingw32/bin/g++.exe -o Debug/WindowsProject2.exe -Wl,-gc-sections -Wl,--start-group Debug/Source.o Debug/thisIsAveryLongFilenameYesSir0.o Debug/thisIsAveryLongFilenameYesSir1.o Debug/thisIsAveryLongFilenameYesSir10.o Debug/thisIsAveryLongFilenameYesSir100.o Debug/thisIsAveryLongFilenameYesSir998.o 
....many files ... 
Debug/thisIsAveryLongFilenameYesSir999.o -Wl,--end-group 
1> Makefile:137: recipe for target 'Debug/WindowsProject2.exe' failed 
1> ------------------------------------------------------------- 
1> Command exited with code 2 
1> Executable: cmd.exe 
1> Arguments: /c "C:\SysGCC\mingw32\bin\mingw32-make.exe" -j8 CONFIG=Debug 
1> Directory: C:\Users\timo\Desktop\Study\Embedded\STM32\VisualGDB\WindowsProject2\WindowsProject2 
1>VisualGDB : error : Command-line action failed 

ich das Make-Befehle von der templae Make-Datei generiert durch visualGDB

ifeq ($(TARGETTYPE),SHARED) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
    $(LD) -shared -o [email protected] $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 

und die Unterstützung schickte mir zwei Varianten, die nicht funktioniert:

1.

ifeq ($(TARGETTYPE),APP) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
@echo $(all_objs) > [email protected] 
$(LD) -o [email protected] $(LDFLAGS) $(START_GROUP) @[email protected] $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 
.
ifeq ($(TARGETTYPE),APP) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
<TAB>@echo -g > [email protected] 
<TAB>$(foreach obj,$(all_objs),cmd /c “echo $(obj) >> [email protected]”) 
<TAB> $(LD) -o [email protected] $(LDFLAGS) $(START_GROUP) @[email protected] $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 

Variante 1 dort auf 17_01_Dev.exe.in ist, die die Liste der Objekte enthält wie

Debug/file2.o Debug/file1.o ...

Aber seine auf ca. 8190 begrenzt Zeichen und dann schneidet sie heraus alle anderen Objekte

Bitte helfen :(

Antwort