MINGW Make не может обрабатывать пробелы в пути? - PullRequest
9 голосов
/ 14 мая 2011

Я пытаюсь скомпилировать код, make-файл, созданный с использованием qmake. Когда я запускаю mingw32-make, я получаю следующую ошибку:

cd bzip2-1.0.5\ && c:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\qmake.exe c:\Documents an
d Settings\user\My Documents\Visual Studio 2010\Projects\meshlab\meshlab\meshla
b\src\external\bzip2-1.0.5\bzip2-1.0.5.pro -o Makefile
Cannot find file: c:\Documents.
Cannot find file: and.
Cannot find file: Settings\user\My.
Cannot find file: Documents\Visual.
Cannot find file: Studio.
Cannot find file: 2010\Projects\meshlab\meshlab\meshlab\src\external\bzip2-1.0.5
\bzip2-1.0.5.pro.
mingw32-make: *** [bzip2-1.0.5\Makefile] Error 2

По ошибке кажется, что mingw32-make не понимает пути, в которых есть пробелы. Это правда? Есть ли способ обойти это?

Ответы [ 3 ]

8 голосов
/ 13 сентября 2013

Обычный способ сделать это в Linux / UNIX состоит в том, чтобы экранировать каждый пробел обратной косой чертой, например: /c/Documents\ and\ Settings/User Однако в MinGW это не всегда работает.

Итак, используйте короткое (8.3) имя. Вы получаете короткое имя с помощью команды Windows (не MinGW) for %I in (<PATH>) do @echo %~sI, где <PATH> может быть . (показать текущий каталог, например, pwd), * (список файлов в текущем каталоге), конкретный путь к файлу, и т.д.

Кстати, чтобы скопировать из окна ужасного cmd.exe, щелкните значок в верхнем левом углу строки заголовка, перейдите в Свойства, Параметры и включите режим QuickEdit. Затем вы можете выбрать текст с помощью мыши. Клавиша Enter (или меню> Правка> Копировать) копирует текст в буфер обмена. Клавиша вставки (или меню> Правка> Вставить) вставляет его.

7 голосов
/ 29 января 2016

Не уверен, полезно ли это или нет (из-за боязни быть отвергнутым), но я создал семантическую ссылку, чтобы избежать путей с пробелами.Не уверен, что это решит проблему, поскольку в моем сценарии после появления семантической ссылки, относящейся к pthreads, отображалась другая ошибка, которую я до сих пор не смог исправить.

Создание семантической ссылки с помощью командной строки:

mklink /j "C:\newshortcut" "C:\Program Files\Directory with spaces"

Затем в команде, которую вы хотите запустить, вы используете C: \ newshortcut

7 голосов
/ 14 мая 2011

С руководство MinGW «Начало работы» :

У MinGW могут быть проблемы с путями, содержащими пробелы, и если нет, то обычно другие программы, используемые с MinGW, будут испытывать проблемы с такими путями. Таким образом, мы настоятельно рекомендуем вам не устанавливать MinGW в любом месте с пробелами в ссылке на путь; т.е. вам следует избегать установки в любой подкаталог «Program Files», «My Documents» и т. п.

Я подозреваю, что те же проблемы, обнаруженные при запуске исполняемых файлов, также проявятся и в других файлах. Вы можете попробовать обернуть все это (спецификацию файла) в двойные кавычки, и это может работать, но Windows иногда не так логична, как оболочки на основе UNIX в этой области.


Пробелы в именах файлов в любом случае злые: -)

...