Внезапно мне кажется, что мне приходится бороться с компиляцией программ на c ++ (в частности, TDM64 5.1.0) из командной строки в Windows (в частности, 10) при использовании имен файлов с подстановочными знаками. Работает нормально, когда имена даны полностью. Я делал это бесчисленное количество раз без проблем Изменить: Но обычно не на окнах … мои воспоминания об этой работе, прежде чем должны быть ложными. Что мне не хватает?
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, и она ожидает, что оболочка расширит символы подстановки для нее. Командная оболочка Windows этого не делает — она ожидает, что отдельные программы будут расширять символы подстановки для себя.
Самое простое решение — загрузить Cygwin, который расширяет шаблоны для вас. В противном случае ответы на этот вопрос могут быть полезны:
Отмечу, что TDM основан на порте MINGW GCC. Я обнаружил, что разные версии этого компилятора на самом деле обрабатывают подстановочный знак по-разному. Например, он отлично работает для меня с версии 3.4.2, компилируемой в Windows 7:
Однако при обновлении до GCC v.4.9.2 этот пакетный файл и другие файлы, которые я использовал, сломались (в частности, * .cpp не был распознан). Это была версия MINGW GCC, поставляемая с Dev-C ++ IDE. Поскольку эта функция мне очень нужна (в частности, тестовая компиляция больших представлений студенческого кода с неопределенными случайными именами файлов), мне фактически пришлось понизить версию и вернуться к старой версии именно для этой цели.