Не удалось найти корректный файл настроек qt creator
Пару слов о том для чего это понадобилось вообще: у меня была простая ситуация — не было быстрого интернета и был компьютер с начисто установленной windows 10. К тому же проект, который ковыряю, требует сборки как под 32 так и под 64 битную архитектуру, поэтому мне показалось что наличие Qt, одинаково сконфигуренного и скомпилированного под эти архитектуры будет только плюсом.
0) Желательно заранее отрубить службы Windows Search и Superfetch и защитник винды. Они на наших операциях будут только тормозить систему, а ресурсы нам скоро понадобятся. Кроме того очень полезно сделать языком ввода по умолчанию английский.
1) Создаем папку «C:\QT» — тут будут жить наши сборки.
2) Для начала нам конечно же понадобится сам компилятор mingw-w64. Качаем инсталлер тут.
3) Устанавливаем по очереди обе версии:
первая установка:
Version — 5.2.0 — последняя на момент написания статьи;
Architecture — i686 — сначала ставим 32 битную версию (пускай вас не пугает что оно не i386, i686 это Интел пентиум про и выше, сумеете запустить 2k винду на чем то более древнем — удачи!)
Threads — win32 — если не портируете исходники с юниксов лучше выбрать нативные;
Exeption — sjlj — мне нужно так, если вам нужны другие — бога ради;
Build revision — 1 опять же последняя на момент написания статьи;
Назначение выбрал «C:\mingw-w64-i686» ибо из Program Files могут быть проблемы с пробелами в путях у qt.
Вторая установка все то же самое кроме:
Architecture — x86_64;
Путь «C:\mingw-w64-x86_64»;
Я так же убрал галку «создать ярлыки», иначе они перезапишутся 64 битной версией, мне это неудобно.
Если не хотите плодить много папок в корне ставить можно в «C:\QT\mingw-w64-i686» и «C:\QT\mingw-w64-x86_64» соответвенно архитектурам, роли это не играет.
4) Качаем исходники бибилиотеки QT 4.8.7 тут
5) Распаковываем сам Qt (тут лучше заранее озаботится наличием программы 7zip ибо виндовый архиватор сначала будет распаковывать во временную папку, потом копировать из нее туеву хучу мелких файлов, идиот, а потом ещё и создаст дополнительную папку внутри с тем же именем) сразу в 2 копии «C:\QT\qt-4.8.7-mingw-w64-i686» и «C:\QT\qt-4.8.7-mingw-w64-x64» (вторая нужна на случай ошибок при конфигуре, гораздо быстрее переименовать копию и пустить фоном распаковываться ещё одну, чем ждать пока отработает mingw32-make confclean). Если не уверены в архиваторе проверяем чтобы в этих папках сразу были папки bin, util, src и т.д., если архиватор создал ещё одну вложенную — вытаскиваем содержимое на уровень выше.
6) Идем в свойства системы и меняем переменную PATH (надо же в моей 10-ке сделали нормальный интерфейс для этого) добавляем туда путь пока только к 32 битной версии компилятора, у меня это: «C:\mingw-w64-i686\mingw32\bin». Если вдруг у вас в PATH есть пути к другим компиляторам временно убираем их оттуда.
7) Запускаем cmd от админа (это важно) и вводим:
должна появится инфа о компиляторе, если этого не произошло значит компиль установлен неправильно, ищем ошибку на предыдущих шагах. Если вывелась информация проверяем, что мы ничего не напутали: у нас запускается действительно 32 битная версия, и что она именно та которую мы установили на предыдущих шагах, а не из оригинального mingw без w64 (это по сути разные проекты) или, прости господи, вижуал студии.
Если все нормально переходим в папку с Qt:
запускаем там конфигур как-то так:
.\configure -debug-and-release -opensource -confirm-license -platform win32-g++ -graphicssystem raster -no-openssl -nis -iconv -system-proxies -no-freetype -plugin-sql-odbc -plugin-sql-sqlite -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -qt-style-windowsce -qt-style-windowsmobile -qt-style-s60
в этом конфиге по максимому все что можно собрать без зависимостей. Мне openssl не очень нужен, иначе его нужно собрать заранее. Если критично время можно отключить примеры, не собирать дополнительные темы и odbc плагин. Справку по опциям можно получить так: ".\configure -help". Далее ждем несколько минут пока отработает конфигур, и запускаем компиляцию:
8) Если у вас медленный интернет, пока компилится сам Qt можно поставить на закачку qt creator 3.2.2 (это последняя версия, которая компилится на 4.8.x), ActivePerl-5.20.2 !32 битную версию! и msysgit !32 битную версию! Указанные тут верcии это последние на момент написания статьи, и, соответственно, те с которыми работал я. Если у вас что-то не пошло на более новых, попробуйте указанные мной. Предупрежу сразу, до сборки qtcreator ставить msysgit очень не желательно, креатор нормально не соберется если увидит в патче sh.exe, а для нормальной работы с гитом его как раз стоит ставить с прописыванием PATH.
9) Устанавливаем perl: я не ставил документацию и примеры, местом назначения сделал «C:\perlx86». Галку «Add perl to the PATH environment variable» не снимаем. После установки в командной строке (естественно не в той, в которой компилится Qt) пишем «perl -v», должна появится информация о версии.
10) Распаковываем qt creator в " C:\QT\qt-creator-opensource-src-3.2.2", так же проверяем чтобы внутри не было вложенной папки, а сразу были папка bin и остальное.
12) Открываем блокном файл «C:\QT\qt-creator-opensource-src-3.2.2\src\libs\utils\tcpportsgatherer.cpp», находим строчку
и меняем её на
13) Перезапускаем cmd опять же от админа. Собираем creator в новой папке:
mkdir C:\QT\qt-creator-3.2.2-x86
cd C:\QT\qt-creator-3.2.2-x86
qmake -r ../qt-creator-opensource-src-3.2.2/qtcreator.pro
mingw32-make release -j4
надеюсь, повторяться про опцию -j4 не надо.
14) Ждем окончания компиляции, запускаем qtcreator, убеждаемся что работает. Закрываем, настраивать в нем пока ещё нечего. Если очень жалко места на диске и оперативы, можно уже скомпиленный creator закинуть в папку с Qt (скопировать только папки bin, lib, share) и добросить в папку bin недостающие dll-ки из mingw. По человечески же, надо наоборот: убрать компилятор и Qt из PATH и докопировать в папку bin creator-а dll-ки из папок bin от Qt и компилятора.
15) Снова открываем редактор PATH убираем оттуда путь к скомпиленному Qt «C:\QT\qt-4.8.7-mingw-w64-i586\bin» и меняем путь к компилятору c «C:\mingw-w64-i686\mingw32\bin» на «C:\mingw-w64-x86_64\mingw64\bin». Опять же перезапускаем cmd от админа и проверяем что нам выдаст
если все в норме, делаем все то же самое что и в шаге 6, только путь у нас теперь будет другой.
cd C:\QT\qt-4.8.7-mingw-w64-x86_64
.\configure -debug-and-release -opensource -confirm-license -platform win32-g++ -graphicssystem raster -no-openssl -nis -iconv -system-proxies -no-freetype -plugin-sql-odbc -plugin-sql-sqlite -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -qt-style-windowsce -qt-style-windowsmobile -qt-style-s60
mingw32-make -j4
16) Теперь, пока компилится 64 битная версия Qt, можно заняться и гитом (джитом, не знаю какая транскрипция правильнее). Устанавливаем msysgit v2.6.3 !32 битную версию! запускаем инсталлер сразу от админа, иначе он поставит нам версию только для локального пользователя, оно нам не надо. Путь я выбрал «C:\msysGitX86». На следующем шаге можно ткнуть галку, которая создаст ярлык к консоли на рабочем столе. Eщё через шаг выбираем «Use git from the Windows Command Promt», Я еще выбрал «Use Windows` default console window» для терминала, остальное на любителя или по умолчанию.
На blogspot есть замечательная статья о том как подружить qt creator и github. Однако в ней не даны инструкции что делать если винт на котором все это настроено сгорел синим пламенем. Попробуем восполнить этот пробел.
17) Запускаем git-bash от админа, с ярлыка который нам создал установщик
git config --global user.email "myMail@example.com"
git config --global user.name "myGithubNick"
git config --global push.default simple
генерим новую пару ключей для ssh:
ssh-keygen -t rsa -C "myMail@example.com"
3 раза жмакаем enter, заходим браузером в свой профиль на гитхабе, удаляем старый ключ (если конечно не собираемся им пользоваться, а он утрачен как у меня) и добавляем новый.
пробуем склонировать существующий репозиторий:
cd ./mysuperproject
git remote -v
touch .testfile.txt
git add .testfile.txt
git commit -m test
git push
git reset --hard HEAD~1
git push -f
естественно ошибок быть не должно, если есть значит что-то не так с установкой гита или ssh.
18) Дожидаемся пока скомпилится 64 битная версия Qt. Убираем из PATH 64 битный компилятор, либо совсем, либо меняем на 32 битную версию, это уже как удобнее. Открываем блокнотом «C:\QT\qt-4.8.7-mingw-w64-x86_64\mkspecs\win32-g++\qmake.conf», сразу после комментов дописываем «QMAKE_TARGET.arch += x86_64», сохраняем, закрываем.
19) Снова запускаем creator (если сейчас он перестал запускаться, значит что-то лишнее есть в path или не все библиотеки мы ему подложили).
Открываем Инструменты(Tools)->Параметры(Options). Сразу же в разделе Среда(Environment) на вкладке Основные(General) нас просят ввести путь к командe patch, можно использовать «C:\msysGitX86\usr\bin\patch.exe». Идём во Внешние утилиты(External Tools) — правим пути.
Переходим в раздел Сборка и запуск(Build & Run), переходим на вкладку Отладчики(Debuggers), нажмаем Добавить(Add), название даем: «mingw32-w64-gdb», путь: «C:\mingw-w64-i686\mingw32\bin\gdb.exe». Снова жмем Добавить(Add), название даем: «mingw64-w64-gdb», путь: «C:\mingw-w64-x86_64\mingw64\bin\gdb.exe».
Переходим на вкладку Компиляторы(Compilers), нажмаем Добавить(Add) ->MinGW, если нет определенных в path имя даем «MinGW32-W64» и путь «C:\mingw-w64-i686\mingw32\bin\g++.exe» (можно и копию сделать для удобства, не страшно). Добавляем ещё один: имя «MinGW64-W64» путь «C:\mingw-w64-x86_64\mingw64\bin\g++.exe», ABI выбираем 64битные, если есть.
Переходим на вкладку Профили Qt (Qt versions), Если 32 битного профиля нет в path добавляем сначала его «C:\QT\qt-4.8.7-mingw-w64-i586\bin\qmake.exe». Потом добавляем 64 битный «C:\QT\qt-4.8.7-mingw-w64-x86_64\bin\qmake.exe». Имена у меня «Qt 4.8.7 mingw-w64 i586» и «Qt 4.8.7 mingw-w64 x86_64» соответвенно.
Переходим на вкладку Комплекты(kits), сначала настраиваем профиль Desktop:
Название:Desktop
Имя в файловой системе: x86
Тип устройства:Desktop
Устройство: Локальный ПК
Sysroot: — оставляем пустым
Компилятор: MinGW32-W64
Отладчик: mingw32-w64-gdb
Профиль Qt: Qt 4.8.7 mingw-w64 i586
Добавляем ещё один
Название:Desktop 64
Имя в файловой системе: x86_64
Тип устройства:Desktop
Устройство: Локальный ПК
Sysroot: — оставляем пустым
Компилятор: MinGW64-W64
Отладчик: mingw64-w64-gdb
Профиль Qt: Qt 4.8.7 mingw-w64 ч86_64
сохраняем, применяем, пробуем что-нибудь собрать.
Вот пожалуй и все что вспомнил по данной теме.
Кстати небольшой хак: если нужно незначительно переконфигурить уже собранную сборку, ну например openssl вы решили добавить или плагин к какому-нить мускулю не собрался, а 2-3-4 часа ждать пока все перекомпилиться ни разу не улыбается, делаем так: выставляем системное время на минут 10-15 раньше чем последний раз конфигурили сборку, переконфигуриваем, возвращаем время на настоящее. Блокнотом изменяем тот(те) мейкфайл(ы) который(е) затрагивает(ют) наши изменения и запускаем мейк, если не ошиблись с мейкфайлами (на самом деле если знать из чего состоит Qt, и что от чего зависит, ошибится трудно) перекомпилится только тот кусок который нам нужен.
Я буду работать с QT 4.8.6 и установить из программного центра Linux Mint эти три: qt4-dev-tools, qt creator и qt4-make. Но когда я открою проект (.pro), запрограммированный на qt4, я получу следующие ошибки на qt creator:
Да, я новичок
Что я могу сделать для решения этого?
Редактировать: вот изображение, когда я буду загружать проект.
Другие решения
Чтобы решить эту конкретную проблему:
Просмотрите ваш стандартный набор Qt Creator:
Теперь откройте свой проект.
Проверьте ваше местоположение qmake в QtCreator (tool-> build&run-> версия Qt)
если это правильно, проверьте свои спецификации ($ QtSDKLocation / $ GCC_Version / gcc_64 / mkspecs)
У меня проблема при попытке указать каталог сборки (каталог, в котором хранятся все файлы перед копированием их в путь DESTDIR).
У меня есть следующие значения в моем файле .pro:
Теперь все файлы в конечном итоге оказываются в этом месте, однако во время сборки компилятор всегда использует папку «E: / Development / build / MinGW_32bit-Debug / src / core» (обратите внимание на отсутствующий путь проекта). Это раздражает, потому что я хочу использовать каталог / Project / build в качестве этого местоположения (которое не отслеживается в моем git-репо).
В идеале я хотел бы, чтобы этот путь был: E:\Development\project\build\src\core\debug ,
Причина, по которой я хочу это сделать, заключается в том, что процесс сборки имеет то же место, куда и скомпилированные библиотеки (это проект subdirs).
Я посмотрел в Tools > Options > Build & Run > General настройки, и каталог сборки по умолчанию: build/build-%-%-%
Однако я не могу изменить это значение. Если я отредактирую эту строку в файле напрямую, как только я снова открою Qt Creator, изменение вернется обратно.
Это Qt Creator или Qmake? Буду ли я лучше использовать другую систему сборки, такую как CMake?
Как найти $QTDIR?
Просто запустите qmake --version , и вы найдете, где находится $QTDIR. Например, на моей машине это, например, /usr/lib/x86_64-linux-gnu/qt5
Предупреждение: в вашей системе может быть ДЕЙСТВИТЕЛЬНО РАЗЛИЧНЫХ qmake исполняемых файлов (по одному для каждой версии qt!). Итак, прежде всего, посмотрите, что использует qmake, который вы используете qtcreator!
Решение
Я приведу здесь лишь некоторую теорию для дальнейшей отладки, потому что для решения проблемы недостаточно информации.
Как я могу найти $ QTDIR?
Просто беги qmake --version и вы найдете, где находится $ QTDIR. На моей машине, например, это, например, /usr/lib/x86_64-linux-gnu/qt5
Предупреждение: может быть много разных qmake исполняемые файлы, установленные в вашей системе (по одному для каждой версии qt!). Итак, прежде всего, посмотрите, какой исполняемый файл qmake используется вами qtcreator!
Как работает процесс сборки?
qmake читает специальный «spec» файл, который содержит информацию о том, какой компилятор вы хотите использовать и т. д. и т. д.
Используя эти опции qmake генерирует Makefile
После этого, make или же cmake вызывает компилятор, компоновщик и т. д. и создает ваш проект.
Решение
Каталог сборки указывается при запуске qmake или же cmake в каталоге сборки. Там нет смысла устанавливать его в .pro сам файл.
Когда Создатель начинает сборку, вызывая qmake или же cmake , он запускает этот процесс в каталоге сборки. Это также, как вы должны собирать проект вручную из командной строки.
Наконец, имеет мало смысла переопределять места назначения промежуточных результатов сборки. Они находятся где-то в каталоге сборки, и это все, что имеет значение. Вы все равно не используете эти файлы напрямую ни для чего.
Обычный способ построить проект qmake:
Папка сборки не должна быть внутри дерева исходников!
Я недавно начал держать их в $TEMP / %TEMP% : ручная очистка устаревших сборок всех видов тестовых проектов устарела через некоторое время 🙂
Написал несложную программу на с++ в Qt Creator. Программа работала. Вчера я решил ее усовершенствовать и открыл этот проект. Все запустилось как было. Потом я исправил одну-пару чисел в коде (вариант с которыми я тоже до этого пробовал, все должно работать исправно). После этого я получаю такую ошибку (проект называется BigNumber):
:-1: ошибка: ..BigNumbermain.cpp: No such file or directory
:-1: ошибка: no input files
Вывод консоли сборки:
11:10:11: Выполняется сборка проекта BigNumber. 11:10:11: Запускается: «C:\Qt\qtcreator-2.4.1\mingw\bin\mingw32-make.exe» clean C:/Qt/qtcreator-2.4.1/mingw/bin/mingw32-make.exe -f Makefile.Debug clean mingw32-make.exe[1]: Entering directory C:/Qt/qtcreator-2.4.1/BigNumber-build-desktop-Qt_4_7_4__4_7_4_________' del debug\main.o debug\bignumber.o debug\mvector.o mingw32-make.exe[1]: Leaving directory C:/Qt/qtcreator-2.4.1/BigNumber-build-desktop-Qt_4_7_4__4_7_4_________' C:/Qt/qtcreator-2.4.1/mingw/bin/mingw32-make.exe -f Makefile.Release clean process_begin: CreateProcess(NULL, del debug\main.o debug\bignumber.o debug\mvector.o, . ) failed. make (e=2): Не удается найти указанный файл. mingw32-make.exe[1]: [clean] Error 2 (ignored) mingw32-make.exe[1]: Entering directory C:/Qt/qtcreator-2.4.1/BigNumber-build-desktop-Qt_4_7_4__4_7_4_________' del release\main.o release\bignumber.o release\mvector.o mingw32-make.exe[1]: Leaving directory C:/Qt/qtcreator-2.4.1/BigNumber-build-desktop-Qt_4_7_4__4_7_4_________' process_begin: CreateProcess(NULL, del release\main.o release\bignumber.o release\mvector.o, . ) failed. make (e=2): Не удается найти указанный файл. mingw32-make.exe[1]: [clean] Error 2 (ignored) 11:10:12: Процесс «C:\Qt\qtcreator-2.4.1\mingw\bin\mingw32-make.exe» завершился нормально. 11:10:12: Настройки не изменились, этап qmake пропускается. 11:10:12: Запускается: «C:\Qt\qtcreator-2.4.1\mingw\bin\mingw32-make.exe» C:/Qt/qtcreator-2.4.1/mingw/bin/mingw32-make.exe -f Makefile.Debug mingw32-make.exe[1]: Entering directory C:/Qt/qtcreator-2.4.1/BigNumber-build-desktop-Qt_4_7_4__4_7_4_________' g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -I"..\BigNumber" -I"." -I"..\..\4.7.4\mkspecs\win32-g++" -o debug\main.o ..\BigNumber\main.cpp g++.exe: ..BigNumbermain.cpp: No such file or directory g++.exe: no input files mingw32-make.exe[1]: Leaving directory C:/Qt/qtcreator-2.4.1/BigNumber-build-desktop-Qt_4_7_4__4_7_4_________' mingw32-make.exe[1]: * [debug/main.o] Error 1 mingw32-make.exe: * [debug] Error 2 11:10:13: Процесс «C:\Qt\qtcreator-2.4.1\mingw\bin\mingw32-make.exe» завершился с кодом 2. Возникла ошибка при сборке проекта BigNumber (цель: Desktop) Во время выполнения сборки на этапе «Сборка»
Не пойму в чем дело, но точно не в этих числах, которые я изменил. При возврате выходит тоже самое. Думаю, я случайно куда-то нажал. Может в файле .pro что-нибудь удалил? Файл .pro
Я буду работать с QT 4.8.6, и я установлю из программного обеспечения Linux Mint это три: qt4-dev-tools, qt creator и qt4-make. Но когда я открою проект (.pro), запрограммированный с qt4, я получу эти ошибки на qt creator:
Да, я новичок. Что я могу сделать для решения этой проблемы?
Изменить: вот изображение, когда я загружу проект.
Как работает процесс сборки?
qmake читает spesial "spec" файл, который содержит информацию о том, какой компилятор вы хотите использовать и т.д. и т.д. и т.д.
Использование этих параметров qmake создает Makefile
После этого make или cmake вызывает компилятор, компоновщик и т.д. и строит ваш проект.
Где находятся эти файлы?
В папке $ QTDIR / mkspecs, где $ QTDIR — это место, где установлен QT. Вы должны проверить эту папку и увидеть там много подпапок, включая те, которые отсутствуют.
Что означает ваша ошибка?
означает, что qmake не смог найти этот файл конфигурации компилятора с шага 1.
3 ответа
Я вложу здесь только какую-то теорию для дальнейшей отладки, потому что для решения проблемы нет информации enogh.
Итак, что мне делать?
Рисунок где находится ваш $QTDIR. Убедитесь, что ваш создатель QT знает об этом
Отметьте папку mkspecs и посмотрите, какие файлы спецификаций будут представлены. Если такой папки нет, вы не будете использовать спецификацию для своего компилятора. Ваша установка QT нарушена.
Где находятся эти файлы?
В папке $QTDIR/mkspecs, где $QTDIR - это место, где установлен QT. Вы должны проверить эту папку и увидеть там много подпапок, в том числе некоторые из них отсутствуют.
Так что мне делать?
Рисунок где ваш $ QTDIR. Убедитесь, что ваш создатель QT знает это
Проверьте mkspecs папку и посмотреть, какие спецификации файлов представлены. Если такой папки нет или у вас нет спецификации для вашего компилятора — ваша установка QT не работает.
Что значит твоя ошибка?
означает, что qmake не смог найти этот файл «конфигурации компилятора» из шага 1.
Читайте также: