2013-02-27 4 views
2

Я хочу начать работу с QT. Я загрузил компилятор QT5 MINGW с создателем QT, и я пытаюсь создать предварительно прикрепленный пример с именем affine проблема в том, что QT5, я думаю, встраивает имя проекта в каждый из исходного файла и, таким образом, дает ошибку, что файл не найден. некоторые вещи похожиQT5 имеется название проекта с каждым именем исходного файла, компиляция ошибки

:-1: error: ..affinemain.cpp: No such file or directory 

в то время как имя файла просто

main.cpp 

я не знаю, как это исправить. Я искал много в интернете, но не нашел ничего полезного. Я даже пытаюсь скомпилировать из командной строки, но я не разбираюсь в компиляции командной строки, поскольку я новичок в QT, и ранее я полностью развился с IDE в visual studio и eclipse для java, поэтому я понятия не имею о make-файле и компиляторе аргументы командной строки. Может ли какой-то орган, пожалуйста, помогите мне исправить эту проблему, и можете ли вы объяснить, почему компилятор имеет название проекта с именем исходного файла? Заранее спасибо

ответ

2

У меня такая же проблема, и мое решение может вам помочь.

Теперь я работаю с Qt5.0.1, и есть два дистрибутива для работы с окнами с ним: Qt5.0.1-mingw и Qt5.0.1-msvc2010. Мне пришлось использовать mingw, и возникла проблема с моей настройкой, которую «/» игнорируется в пути.

Так по Qt Creator, компилятор вызывается для обработки файла mainwindow.cpp и этот файл был передан ему

g++ /*truncated*/ ..\qt-example\mainwindow.cpp 

Ниже приводится полный входной составитель:

g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DQT_NEEDS_QMAIN -I..\qt-example -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include" -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtWidgets" -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtGui" -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtCore" -I"debug" -I"." -I"." -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\mkspecs\win32-g++" -o debug\mainwindow.o ..\qt-example\mainwindow.cpp 

И ошибка производится.

g++.exe: error: ..qt-examplemainwindow.cpp: No such file or directory 
g++.exe: fatal error: no input files 
compilation terminated. 

Таким образом, мы можем видеть, что компилятор игнорируется «\», и ​​имя файла сливается с именем каталога.

Решение этой проблемы относится к используемым инструментам - MinGW (Минималистские порты GCC и Binutils). А также MSYS - набор утилит GNU, таких как bash, make, gawk и grep, позволяющий создавать приложения и программы, которые зависят от традиционно используемых инструментов UNIX. В нашем случае - g ++.

MSYS не поставляется с Qt5.0.1-mingw, а g ++ не использует его, но MSYS, доступный в вашей переменной среды PATH, разбивает систему.

MSYS is used для git scm, который я установил, поэтому мой путь содержит ссылки на MSYS, который поставляется в комплекте с git. Поэтому у меня есть следующие пути в переменной среды PATH.

C:\Program Files (x86)\git\bin;C:\Program Files (x86)\git\cmd 

я не нашел, как MSYS используется Qt Creator или г ++, или там, где это связано, но когда я упал следующий путь от PATH:

C:\Program Files (x86)\git\bin; 

и перезапустить Qt Creator - г ++ удалось скомпилировать мой файл, он сработал. Вопрос, почему/как он влияет на Qt Creator/g ++, который не должен использовать утилиты MSYS, установленные с git, по-прежнему открыт.

+0

MSYS не требуется для MinGW (-w64) НКИ. Вы не должны добавлять 'msysgit/bin' в свой системный PATH. Удалите это и, скорее всего, вам удастся больше удачи после повторного запуска qmake. MSYSgit должен устанавливать ярлыки для git Bash, который работает без изменений PATH. Если вы хотите использовать основные команды git из cmd, сохраните '../ git/cmd' часть в PATH. – rubenvb

+0

Правильно, MSYS не требуется, но вопрос в том, почему/как он разрывает g ++. Потому что это нарушает его. Я не добавил «sysgit/bin» специально - они добавляются во время установки молча. Как я уже сказал, оба git (в Console2) и qmake работают без них. Хорошая вещь, чтобы добавить '../git/cmd' в PATH, чтобы получить git, идущий от cmd. Я добавлю это к ответу. Спасибо. – pershyn

+0

где вы получили свой msysgit? Каждый раз, когда я его устанавливаю, он предлагает выбор, чтобы добавить git/bin, git/cmd или ничего в PATH, с большим предупреждением о добавлении git/bin в PATH. – rubenvb

0

Я не могу комментировать.

важно: удалить все файлы в выпуске и отладке папке (скомпилированные версии), прежде чем пытаться кончиками Autor ...