Как использовать MinGW-64 с Qt Creator

Я знаю, что есть много сообщений об этом, но я, честно говоря, ничего не понял.

Итак, как мне установить комплект для моего Qt Creator (с открытым исходным кодом 5.7)?

  • Я уже скачал и установил MSYS2.... не знаю, что с ним делать.
  • Я уже скачал и установил Qt64 - NG.... понятия не имею, что делать дальше.

Я просто хочу иметь возможность разрабатывать в Qt и выбрал между MinGW 32 и MinGW 64.

Заранее спасибо!


РЕДАКТИРОВАТЬ: я также проверил страницу вики. Большинство команд не работали. А мне сказали, что он устарел.


person andseg    schedule 12.07.2016    source источник


Ответы (3)


Я знаю, что ваш вопрос заключается в том, как установить комплект для вашего Qt Creator, но сначала я думаю, что это необходимо для введения (извините за ваши глаза, английский не мой родной язык)

Введение

Намерение состоит в том, чтобы использовать компилятор GCC под Windows, что означает, что нам нужен MinGW (минималистский GNU для Windows).

MinGW работает только для 32-битных систем, поэтому нам нужны 64-битные форки, что означает использование разновидностей MinGW-w64 или TDM-GCC.

  • MinGW, компилятор GCC для 32-битных приложений.
  • MinGW-w64, компилятор GCC для 32- и 64-битных приложений.
  • TDM-GCC, компилятор GCC для 32- и 64-битных приложений.

С этим мы можем создавать наши приложения/программы в Windows. Кроме того, у нас есть другие два разных инструмента:

  • Библиотека Qt Framework для создания графических интерфейсов/интерфейсов с мультиплатформенной совместимостью.
  • Qt Creator — редактор C/C++ с дополнительными инструментами редактирования для Qt Framework.


О бинарной цепочке совместимости

Когда мы делаем приложение, мы должны следовать цепочке библиотек, скомпилированных с одной и той же версией компилятора, точно так же, как мы должны следовать двоичному интерфейсу приложения (32 или 64 бита) для этих библиотек.

Это означает, что если мы хотим скомпилировать приложение для 32 и 64 бит с помощью MinGW-w64 5.3 плюс Qt 5.7 Framework, нам нужно:

  • MinGW-w64 5.3 (с флагами 32 бита в конфигурации) и 32-битная сборка Qt 5.7 Framwork, скомпилированная под MinGW-w64 (MinGW-w64 версии 5.3 или ниже, если они поддерживают совместимость двоичного кода с нашим компилятором).
  • MinGW-w64 5.3 (с флагами 64 бит в конфигурации) и 64-битная сборка Qt 5.7 Framwork, скомпилированная под MinGW-w64 (MinGW-w64 версии 5.3 или ниже, если они поддерживают совместимость двоичного кода с нашим компилятором).

А теперь самое странное. На официальной странице Qt доступны только 32-битные сборки для MinGW... Не знаю почему...

Вот когда появился проект Qt64-NG, место, где можно получить 64-битные бинарные пакеты Qt Framework для MinGW-w64. К сожалению, проект закрыт, поэтому пока доступна только версия Qt 5.5 Framework.

Я не знаю другого места, где можно получить более новые 64-битные двоичные пакеты Qt для MinGW-w64 (может быть, те, что в проекте MSYS2? Я еще не пробовал). Так что, если кому-то это нужно, на данный момент он должен быть скомпилирован самостоятельно (это для ответа на ваш комментарий с открытым исходным кодом 5.7).


Установка и настройка

Теперь ваш вопрос. Как установить комплект для вашего Qt Creator. Я собираюсь ответить за 64-битные двоичные файлы, потому что это то, что я использую (и в последнем случае вам просто нужно сделать то же самое для 32-битных)

Для использования Qt Creator с MinGW-w64 достаточно:

  • Загрузите Qt Creator и установите его. Мой совет: скачайте моментальные снимки версии 4.1 (или выше), если вы собираетесь использовать CMake. проекты.

  • Загрузите MinGW-w64 (posix-seh или по вашему выбору) + распаковать в одну папку.

Вот и все, с этим мы можем создавать 32- и 64-битные приложения.

С другой стороны, в дополнение к вышеуказанным шагам, если вы хотите создавать приложения с использованием библиотеки Qt Framework (графический интерфейс/интерфейс для наших приложений), вам потребуется двоичный пакет, в данном случае 64-битный (32-битный двоичный пакет доступен по адресу официальная страница Qt)

  • Загрузите Qt64-NG (posix-seh или выше выберите вариант ) + распаковать в одну папку.
    После этого необходимо выполнить qtbinpatcher.exe, включенный в этот каталог, просто дважды щелкнув.
    Примечание. Если вы измените этот каталог на другой путь, снова выполните qtbinpatcher.

Вот где заканчивается процесс установки. В моем случае у меня все в одной папке. Пример:

D:\Programacion\mingw64_5.3.0rev0\
D:\Programacion\qt64-ng\qt-5.5.0-x64-mingw510r0-seh\

Теперь вам просто нужно настроить QtCreator, в данном случае:

Инструменты > Параметры > C++, Компиляторы, Добавить > MinGW

  • В имя укажите версию компилятора, MinGW-5.3 x64
    Это имя будет отображаться в наборах
  • В разделе Путь к компилятору найдите путь к компилятору C++, в данном случае D:\Programacion\mingw64_5.3.0rev0\bin\g++.exe

    Обратите внимание, что в ABI выбрано использование 64-битных флагов в компиляторе. Вот почему мы указали имя x64. Для 32 бит просто продублируйте и измените выделение.

Инструменты > Параметры > C++, Отладчики, Добавить

  • В разделе Путь перейдите к пути отладчика, в данном случае D:\Programacion\mingw64_5.3.0rev0\bin\gdb.exe
  • В поле имя укажите имя, указанное в версии, в данном случае GDB 7.10.1.
    Это имя будет отображаться в наборах

И, если вы хотите создавать 64-битные программы с использованием Qt Framework, в дополнение к вышеперечисленному:

Инструменты > Параметры > C++, версии Qt, Добавить и выберите qmake.exe, помещенный в каталог bin qt64-ng.

  • В данном случае это D:\Programacion\qt64-ng\qt-5.5.0-x64-mingw510r0-seh\bin\qmake.exe
  • В name введите Qt %{Qt:Version} (qt-5.5.0-x64-mingw510r0-seh)
    Это имя будет показано на вкладке "Наборы"

Теперь вам просто нужно указать Kit:

Инструменты > Параметры > C++, Наборы, Добавить

  • В имя MinGW-5.3 x64 (Qt-5.5)
  • В компиляторе выберите MinGW-5.3 x64.
  • В отладчике выберите GDB 7.10.1.
  • В Версия Qt выберите Qt 5.5.0 (qt-5.5.0-x64-mingw510r0-seh).

И в CMake идет путь CMake, если кто-то собирается его использовать (я использую его с ниндзя).

Примечание. Для установки Ninja просто скопируйте ninja.exe в каталог mingw-w64\bin, а в Kit в Cmake генератор нажмите кнопку генератор. em>->ninja и Дополнительный генератор->CodeBlocks. Ninja запускает несколько команд make одновременно, что сокращает время компиляции.


Длинный текст за 1 минуту настройки. Комплект — это то, что мы выбираем для компиляции проекта, и можно иметь сколько угодно комплектов (CompilerA x32 + Qt5.x, CompilerB x64 + Qt5.x, CompilerX x64 + Qt4.8 и т. д. и т. д.).

Теперь, прежде чем закончить, важная вещь. После того, как мы создадим проект (и проект будет открыт), в селекторе проектов (Ctrl+5) мы должны позаботиться о переменных среды сборки.

Это переменные, которые будут добавлены в команду, которая запускает наши прогоны/сборки для тестирования и отладки.

В PATH нужно прописать пути к MinGW-w64 и к Qt64-NG. И по моему скромному мнению, я рекомендую ставить именно в таком порядке из-за dll. По нашему примеру:

PATH D:\Programacion\mingw64_5.3.0rev0\bin;D:\Programacion\qt64-ng\qt-5.5.0-x64-mingw510r0-seh\bin;the_other_paths

Ветку снапшотов QtCreator мне не нужно проверять, это делается автоматически


Так работает большинство редакторов C/C++. Чтобы установить редактор, укажите путь к компилятору и отладчику и укажите переменные среды сборки для запуска из редактора (переопределяя те переменные среды, которые у нас есть в Windows).

Примечание: я рекомендую компилировать Qt Creator с 64-битной версией, так как это происходит с Framework, для Windows он доступен только в 32-битной версии на официальном сайте Qt


Альтернативный способ

С другой стороны имеем:

  • MSYS2 , Linux-подобная среда инструментов.

Там все тоже самое, просто скачиваем/устанавливаем пакеты командой pacman, и доступны 32 и 64 битные версии. Эти приложения необходимо запускать из оболочки MSYS2. Дело не в бинарной совместимости, а в путях.

Библиотеки, доступные в проекте MSYS2, можно использовать в первой цепочке инструментов, которую я описал (также должны быть собраны под MinGW-w64).


РЕДАКТИРОВАНИЕ: исправлены имена, последнее объяснение и добавлены URL-адрес Ninja и примечание по установке.

person ClassicOcean    schedule 23.07.2016
comment
Хорошее объяснение, приятель, я обязательно воспользуюсь этим. Спасибо! - person andseg; 25.07.2016
comment
+1 за указание на то, что только цепочка инструментов i686-w64-mingw32 упакована с Qt Creator (и вы не знаете, почему). Я только что провел неделю, пытаясь получить то, что хорошо скомпилировано в Cygwin, работающем под Qt Creator, и причина в том, что Cygwin использовал цепочку инструментов x86_64-w64-mingw32. (Моя проблема заключалась в том, что моя библиотека поставщиков не совместима с цепочкой инструментов i686, поэтому нет связи!) - person PfunnyGuy; 08.11.2017

Вы должны решить, собираетесь ли вы использовать экосистему MSYS2 или нет. Если вы хотите использовать MSYS2, вам следует удалить программное обеспечение Qt, которое вы загрузили отдельно, чтобы избежать путаницы. В остальной части этого ответа я предполагаю, что вы используете MSYS2.

Вы можете установить эти пакеты MSYS2 с помощью pacman:

  • mingw-w64-i686-qt
  • mingw-w64-i686-qt-создатель
  • mingw-w64-x86_64-qt
  • mingw-w64-x86_64-qt-создатель

Затем откройте 32-битную или 64-битную оболочку MinGW-w64, используя соответствующий ярлык в меню «Пуск», и запустите «qtcreator» в командной строке.

Вы также можете использовать другие системы сборки для создания своего программного обеспечения. Я успешно использовал CMake для создания приложений Qt в MSYS2 вместо Qt Creator.

person David Grayson    schedule 12.07.2016
comment
Спасибо за комментарий. Я только что узнал, что MSYS2 и Qt - это две разные вещи. Допустим, я предпочитаю использовать Qt. Есть ли способ установить на него MinGW 64? - person andseg; 13.07.2016
comment
Я думал, что официальный дистрибутив Qt Creator для Windows поставляется в комплекте с собственным компилятором MinGW-w64. Вы должны просто попытаться использовать это, верно? - person David Grayson; 13.07.2016
comment
Он поставляется с компилятором MinGW-32 и множеством наборов MSVC, но это почти все. Кроме того, я попытался запустить исполняемый файл на 64-битной машине, и это не сработало. - person andseg; 13.07.2016
comment
Я собираюсь закрыть этот вопрос, потому что я только что узнал, что проблема даже не в этом :/ Тем не менее, спасибо, что нашли время ответить на этот вопрос ^^ - person andseg; 13.07.2016
comment
Спасибо, это намного проще, чем пытаться обновить компилятор для Qt Creator, установленного напрямую. - person M.M; 25.02.2018
comment
Какой из них я должен установить и в чем разница между этими двумя? i.imgur.com/Sg1GUAC.png - person vasili111; 27.05.2018
comment
Установите статическую, если вы хотите создавать статически связанные программы, содержащие весь код Qt, вместо того, чтобы зависеть от библиотек Qt DLL. - person David Grayson; 27.05.2018
comment
В прошлом Qt поставляла среду Win32, основанную на исходном проекте Mingw. Недавно (не уверен точно, как давно Qt 5.11 до 5.12 - ish я думаю) они начали включать среды Win32 и Win64, которые основаны на fork, известном как Мингу-64. Это обеспечит то, что появится в вашем меню «Пуск» (в Qt) в виде различных оболочек Qt 5.xx (MinGW {5|7}.yy {32|64}-битных оболочек, которые являются средами командной строки «bash». - person SlySven; 22.06.2019
comment
Однако для компиляции некоторых вещей (библиотек, которые могут понадобиться вашему проекту) вам потребуется более POSIX (подобная unix) среда, которая будет поддерживать набор вещей autotools, а Qt не поддерживает свяжите оболочку Qt 5xx (MSYS2), которая вам, вероятно, понадобится для их поддержки. Итак, вам может понадобиться пойти другим путем, НЕ устанавливайте Qt из Qt, вместо этого установите MSYS2, а затем установите библиотеки Qt (и IDE QtCreator), которые они (Mingw64) упаковали, и это также будет поставляться с большим количеством библиотек и компиляторов (GCC и т. д.) которые вам также могут понадобиться. - person SlySven; 22.06.2019

Непосредственный запуск из проводника также будет работать, если только вам не нужно использовать плагин Autotools qtcreator, и в этом случае необходимо запустить его из оболочки msys2 (чтобы различные переменные среды были установлены правильно).

person Ray Donnelly    schedule 13.07.2016
comment
Непосредственный запуск из проводника также будет работать. Что ты имеешь в виду? - person andseg; 13.07.2016
comment
Я имею в виду двойной щелчок по qtcreator.exe вместо использования оболочки msys2. - person Ray Donnelly; 14.07.2016