Как скомпилировать приложение Qt через командную строку с MinGW? - PullRequest
1 голос
/ 25 февраля 2012

Я скачал последнюю версию Qt для MinGW, и у меня есть правильная версия MinGW, совместимая с Qt.Когда я пытаюсь создать проект, g ++ не может найти мой исходный файл, даже если он находится в той же папке, что и файл проекта.

Это те шаги, которые я выполнил (все файлы проекта и исходные файлы находятся в T:\QtTest):

T:\QtTest> qmake -project
T:\QtTest> qmake
T:\QtTest> make

И вывод такой:

T:\QtTest> make
mingw32-make -f Makefile.Debug
mingw32-make1: Entering directory `T:/QtTest’
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I“c:\Qt\4.8.0\include\QtCore” -I“c:\Qt\4.8.0\include\QtGui” -I“c:\Qt\4.8.0\include” -I”.” -I“c:\Qt\4.8.0\include\ActiveQt” -I“debug” -I“c:\Qt\4.8.0\mkspecs\default” -o debug\main.o main.cpp
g++: main.cpp: no such file or directory
g++: no input files
mingw32-make1: *** [debug/main.o] Error 1
mingw32-make1: Leaving directory `T:/QtTest’
mingw32-make: *** [debug] Error 2

Я понятия не имею, почему он не может найти файл "main.cpp", когда он находится в том же каталоге, что ифайлы проекта.Даже если я заменю «main.cpp» на полный путь («T: \ QtTest \ main.cpp»), он все равно не найдет его.Что я делаю не так?

Ниже приведена структура моего проекта: (main.cpp - единственный файл, который я написал, все остальные сгенерированы qmake)

T:\QtTest\main.cpp 
T:\QtTest\Makefile
T:\QtTest\Makefile.debug
T:\QtTest\Makefile.release
T:\QtTest\QtTest.pro
T:\QtTest\debug\
T:\QtTest\release\

Мой g ++версия 4.4.0, это версия, предложенная установщиком Qt и доступная для загрузки на той же странице, что и установщик Qt для MinGW.

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Проблема решена.

Это не имеет ничего общего с MinGW или Qt или make-файлами, сгенерированными qmake. Я обнаружил, это было вызвано только пользовательской записью в реестре Windows . Я публикую это решение для всех, кто сталкивается с той же проблемой:

Некоторое время назад я создал запись в реестре Windows под HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor с именем Autorun, которая заставляет CMD.exe запускаться в пользовательском рабочем каталоге, что я и хотел сделать (поэтому я выполнил шаги, подробно описанные в эта страница о «Как изменить каталог запуска по умолчанию для командной строки» : http://windowsxp.mvps.org/autoruncmd.htm).

Ну, я полностью пренебрегал частью CAUTION на этой странице, которая гласит, что "Изменение текущего каталога с использованием значения автозапуска, как упомянуто в этой статье, может повлиять на функциональность пакетных сценариев" . Да, позор мне.

Итак, если у вас возникла такая же проблема невозможности создания ваших проектов Qt с использованием qmake, а все остальное выглядит хорошо в структуре вашего проекта и файлах сборки, убедитесь, что у вас нет чего-то в реестре Windows, что может изменить каталог запуска командной строки.

0 голосов
/ 25 февраля 2012

У вас установлен MSYS? Если sh.exe из MSYS находится на системном пути, это может конфликтовать с интерпретацией путей в стиле Windows. Проверьте документацию здесь .

Если проблема не в этом, удалите все в папке проекта, кроме исходных файлов, и начните заново с qmake -project. После этого откройте файл .pro и убедитесь, что все выглядит правильно. Для очень простого проекта я получаю что-то вроде этого:

TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += widget.h
FORMS += widget.ui
SOURCES += main.cpp widget.cpp

Следующие два шага, при запуске qmake и затем make должны работать правильно. Если нет, то в ваших шагах нет ничего плохого, а в вашей системе / среде что-то не так.

...