2016-04-11 10 views
1

Plötzlich habe ich Probleme mit der Kompilierung von C++ - Programmen (speziell TDM64 5.1.0) von der Kommandozeile unter Windows (speziell 10), wenn Wildcard-basierte Dateinamen verwendet werden. Es funktioniert gut, wenn die Namen vollständig angegeben sind. Ich habe das schon unzählige Male vorher ohne Probleme gemacht Edit: Aber normalerweise nicht auf Windows ... meine Erinnerungen an diese Arbeit müssen vorher falsch sein. Was vermisse ich?g ++ nicht Kompilierung mit Platzhalterdateinamen unter Windows

C:\Users\Duncan Coulter\Code>dir *.cpp 
Volume in drive C has no label. 
Volume Serial Number is 9EE6-DBBD 

Directory of C:\Users\Duncan Coulter\Code 

2016/04/04 01:35 PM    7 869 LittleMan.cpp 
2016/04/04 01:35 PM    1 912 main.cpp 
       2 File(s)   9 781 bytes 
       0 Dir(s) 90 288 394 240 bytes free 

C:\Users\Duncan Coulter\Code>g++ *.cpp 
g++: error: *.cpp: Invalid argument 

C:\Users\Duncan Coulter\Code>g++ main.cpp LittleMan.cpp 
+0

Bitte Screenshots nicht posten: Sie hätten das als einfachen Text schreiben können (beginnen Sie jede Zeile mit ">" und fünf Leerzeichen), und es wäre * viel * besser lesbar gewesen) –

+0

@MartinBonner Ok I ' habe es wie gewünscht auf reinen Text umgestellt. – DuncanACoulter

+1

Ich glaube nicht, dass es sich um einen Speicherfehler handelt. Ich habe gerade Versionen von GCC (aktuelle Version 4.9.2) aktualisiert und ich muss eine Windows-Batchdatei ändern, die zuvor * .cpp erfolgreich verwendet hat und jetzt nicht mehr funktioniert, wenn ich sie nicht durch bestimmte Dateinamen ersetze. –

Antwort

3

Ihr Problem ist, wo Sie schreiben:

g++ *.cpp 

g++ ist ein Programm, Linux-Stil, und erwartet, dass die Schale für sie Platzhalter zu erweitern. Die Windows-Befehlsshell tut das nicht - sie erwartet von einzelnen Programmen, dass sie Platzhalter für sich selbst erweitern.

Die einfachste Lösung ist, Cygwin herunterzuladen - die Wildcards für Sie erweitert. Ansonsten sind die Antworten auf diese Frage kann nützlich sein:

https://superuser.com/questions/460598/is-there-any-way-to-get-the-windows-cmd-shell-to-expand-wildcard-paths

+0

Ah ich sehe ich normalerweise Linux und muss falsche Erinnerungen an diese Arbeit an Windows erstellt haben – DuncanACoulter

+0

Ich nehme an, dass MSYS auch das für mich behandelt ... das würde erklären, warum ich schwöre, dass es früher funktioniert hat. – DuncanACoulter

1

Ich nehme zur Kenntnis, dass TDM auf der mingw Portierung von GCC basiert. Ich habe festgestellt, dass verschiedene Versionen dieses Compilers tatsächlich den Platzhalter anders behandeln. Zum Beispiel arbeitet es für mich völlig in Ordnung, ab Version 3.4.2 unter Windows kompilieren 7:

GCC v.3.4.2 compiling with wildcard on Windows 7

Allerdings, wenn ich auf GCC v.4.9.2 aufgerüstet, diese Batch-Datei und andere, die ich war Verwenden von Ausschuss (genauer gesagt wurde die * .cpp nicht erkannt). Dies war eine Version von MINGW GCC, die mit der Dev-C++ IDE geliefert wurde. Weil ich diese Funktion ziemlich schlecht brauchte (speziell das Testen von großen Einreichungen von Studentencode mit nicht spezifizierten zufälligen Dateinamen), musste ich eigentlich zu diesem Zweck herunterstufen und zu der alten Version zurückkehren.

+0

'g ++ * .cpp' funktioniert perfekt für mich mit mingw-w64 (mingw-builds Ausgabe 4.9.2) in Windows 10 Eingabeaufforderung –

+1

Für was es wert ist, ich auch Studienbeiträge mit unbekannten Dateinamen kompiliert. – DuncanACoulter