Russian Qt Forum

Компиляторы и платформы => Компиляторы => Тема начата: Eugene Efremov от Май 08, 2007, 04:00



Название: mingw32-make юзает sh, makefile хочет cmd.exe
Отправлено: Eugene Efremov от Май 08, 2007, 04:00
mingw32-make версии 3.81, при обнаружении zsh, sh или еще чего-нибудь в том же духе, в качестве шелла юзает именно его. И это, вообще говоря, правильно. Но проблема в том, что при этом она перестает понимать \ как разделитель директории. А оно встречается.

Например qmake от QT генерит именно такие makefile. Как результат -- в makefile написано c:\Qt\4.2.3\bin\moc.exe, а оно выдает:
Код:

zsh: command not found: c:Qt4.2.3binmoc.exe


Вопрос: как заставить эту make юзать для таких случаев cmd.exe? Или -- любым другим способом втолковать ему, что \ -- это разделитель директорий, а не только квотинг?...

P.S. Bариант убирания из path всех *sh не предлагать...


Название: mingw32-make юзает sh, makefile хочет cmd.exe
Отправлено: Вудруф от Май 08, 2007, 08:41
Попробуйте заменить \ на \\.


Название: mingw32-make юзает sh, makefile хочет cmd.exe
Отправлено: Eugene Efremov от Май 08, 2007, 13:13
Цитата: "Вудруф"
Попробуйте заменить \ на \\.


А как быть с теми \ которые действительно используются для квотинга? Я думал о скрипте, который автоматически меняет makefiles, но проблема в том, как отличить, где пути, а где квотинг. Если кто посоветует мне регексп (или какой другой способ), способный гарантированно отличить одно от другого -- буду ему благодарен.

И потом, разница в синтаксисе между cmd и sh заключается не только в этом. Например md и mkdir, cp и copy... Оно честно пытается запустить программу copy.exe... С понятным результатом:

Код:

process_begin: CreateProcess(NULL, copy foo bar, ...) failed.
make (e=2): Не удается найти указанный файл.
mingw32-make.EXE: *** [bar] Error 2


Нет, нужен какой-то способ указать mingw32-make, какую shell ему надо юзать...

P.S. Долго гуглил... Единственное вразумительное, что нашлось по теме, это http://lists.trolltech.com/qt-interest/2006-01/thread00091-0.html. Мать их так, похоже, придется или-таки извращаться с path, или как-то патчить саму mingw32-make...