Здравствуйте! Я начинающий программист и недавно использую Qt. Не могу разобраться с компиляцией приложения на C++ с использованием Qt. Написал простейшую программу под Linux Mint:
#include <QtGui>
#include <QWidget>
#include <QTimer>
#include <QPoint>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
return app.exec();
}
хочу получить .exe. Для этого пытаюсь следовать инструкции отсюда:
https://askubuntu.com/a/656329
Как я понял, там пропущен один шаг. Я делаю так:
PATH=<mxe root>:$PATH
export PATH
<mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5 -project
Здесь у меня возникает ошибка
Project ERROR: Cannot run compiler 'i686-w64-mingw32.static-g++'. Maybe you forgot to setup the environment?
Но я её игнорирую и продолжаю:
<mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5
make
При этом, сразу запустить qmake без -project нельзя, он мне справку выдаёт. А вот после make у меня возникает ошибка:
make[1]: i686-w64-mingw32.static-g++: Command not found
С ней я разобрался. Надо в Makefile.Release заменить строчки
CXX = i686-w64-mingw32.static-g++
LINKER = i686-w64-mingw32.static-g++
на
CXX = <mxe root>/usr/bin/i686-w64-mingw32.static-g++
LINKER = <mxe root>/usr/bin/i686-w64-mingw32.static-g++
Но теперь появляется ошибка, которую я уже побороть не могу:
fatal error: QWidget: No such file or directory
Подскажите, пожалуйста, что мне делать. И, если возможно, объясните, почему ещё в том ответе опущена строчка
<mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5 -project
а мне приходится делать такие странные манипуляции. Подозреваю, что могут быть какие-то совершенно идиотские ошибки у меня. И есть ещё проблема, что я не понимаю, какие версии Qt на каком шаге используются. Так сложилось, что я себе поставил как четвёртый, так и пятый Qt. Но, как я понимаю, в вопросе речь идёт о пятом Qt.
Делать надо так:
0) Как сказано в ответе https://askubuntu.com/a/656329, надо:
git clone https://github.com/mxe/mxe.git
cd mxe && make qtbase
1) Добавить в test.cpp строчку
#include <QtWidgets>
2) Потом
PATH=<mxe root>:$PATH
export PATH
<mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5 -project
<mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5
игнорируя возникающую после /usr/bin/i686-w64-mingw32.static-qmake-qt5 -project ошибку
3) Потом дописать в файл test.pro строку
QT += widgets
после строки INCLUDEPATH += .
4) Выполнить
make
Он завершится с ошибкой, но это не конец.
5) Заменить в Makefile.Release
CXX = i686-w64-mingw32.static-g++
LINKER = i686-w64-mingw32.static-g++
на
CXX = <mxe root>/usr/bin/i686-w64-mingw32.static-g++
LINKER = <mxe root>/usr/bin/i686-w64-mingw32.static-g++
6) Снова выполнить
make
И в папке release образуется test.exe
Если в мой C++ файл добавить строки
QWidget w;
w.show();
то после аналогичных манипуляций окошко появляется, проверил под виртуалкой с 64-битной восьмой Windows.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Задание:Структура с именем TRAIN поля: -название пункта назначения; -номер поезда; -время отправления Способ обработки – вывод на дисплей результата...
Есть программа, которая в цикле сравнивает строки, всё в ней работает, но в итоге превышается тайм лимит на 0,001 - 0,007 секундыРешил с каждой итерацией...
Имеется адрес в котором хранится строка в UTF-16Вопрос как ее нормально считать в массив char с помощью ReadProcessMemory? Я пытался вот так: