6

突然之间,当使用基于通配符的文件名时,我似乎正在努力从 Windows(特别是 10)的命令行编译 c++ 程序(特别是 TDM64 5.1.0)。当名称完整时,它可以正常工作。我之前已经做过无数次了,没有问题编辑:但通常不会在 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
4

2 回答 2

5

你的问题是你写的地方:

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

于 2016-04-11T11:09:28.193 回答
2

我注意到 TDM 基于 GCC 的 MINGW 端口。我发现这个编译器的不同版本实际上对通配符的处理方式不同。例如,从 3.4.2 版开始,它对我来说工作得非常好,在 Windows 7 中编译:

GCC v.3.4.2 在 Windows 7 上使用通配符编译

但是,当我升级到 GCC v.4.9.2 时,这个批处理文件和我正在使用的其他文件坏了(特别是 *.cpp 无法识别)。这是随 Dev-C++ IDE 一起提供的 MINGW GCC 版本。因为我非常需要这个功能(特别是,测试编译大量提交的带有未指定随机文件名的学生代码),实际上我不得不降级并恢复到旧版本。

于 2016-09-16T22:09:11.153 回答