簡體   English   中英

g ++無法在Windows上使用通配符文件名進行編譯

[英]g++ not compiling with wildcard filenames on Windows

當使用基於通配符的文件名時,我似乎突然想從Windows(特別是10)上的命令行編譯c ++程序(特別是TDM64 5.1.0)。 名稱全稱時,它可以正常工作。 我之前已經無數次這樣做了,沒有問題編輯:但是通常不是在Windows上……我對這項工作的記憶必須是false 我想念什么?

 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 

您的問題是您在哪里寫:

 g++ *.cpp 

g++是linux風格的程序,期望shell為其擴展通配符。 Windows命令外殼程序無法執行此操作-它希望各個程序自己擴展通配符。

最簡單的解決方案是下載cygwin-確實可以為您擴展通配符。 否則,此問題的答案可能會有用:

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

我注意到TDM基於GCC的MINGW端口。 我發現該編譯器的不同版本實際上對通配符的處理方式有所不同。 例如,對於我來說,在Windows 7中編譯,從3.4.2版本開始,它工作得非常好:

在Windows 7上使用通配符編譯的GCC v.3.4.2

但是,當我升級到GCC v.4.9.2時,這個批處理文件和其他我正在使用的文件損壞了(特別是* .cpp無法識別)。 這是Dev-C ++ IDE附帶的MINGW GCC的版本。 因為我非常需要此功能(特別是使用未指定的隨機文件名測試編譯大量的學生代碼提交),所以我實際上不得不降級並出於這個目的恢復到舊版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM