C++ | Компиляция и запуск программы в редакторе Qt Creator
Заполним созданные файлы кодом. Содержимое файла HelloWorld.hpp:
#ifndef HELLOWORLD_HPP
#define HELLOWORLD_HPP
void printHelloWorld();
#endif // HELLOWORLD_HPP
Содержимое файла HelloWorld.cpp:
#include <iostream>
#include "HelloWorld.hpp"
void printHelloWorld() {
std::cout << "Hello, world!" << std::endl;
}
Содержимое файла main.cpp:
#include "HelloWorld.hpp"
int main() {
printHelloWorld();
return 0;
}
Теперь можно скомпилировать проект и запустить в редакторе Qt Creator. Предварительно сохраняем файлы, выбрав в меню Файл пункт Сохранить все или нажав комбинацию клавиш <Shift>+<Ctrl>+<S>.
Скомпилировать программу и сразу ее запустить можно несколькими способами:
- в меню Сборка выбираем пункт Запустить;
- нажимаем комбинацию клавиш <Ctrl>+<R>;
- нажимаем кнопку с изображением зеленого треугольника на панели слева (рис. 2.10). Если нужно выполнить только сборку без запуска, то нужно выбрать кнопку с изображением молотка.
Рис. 2.10. Способы сборки и запуска программы
На вкладке Вывод сборки (рис. 2.11) отобразятся инструкции компиляции. Если компиляция прошла успешно, то никаких сообщений об ошибках в этом окне не будет:
15:25:16: Выполняются этапы для проекта HelloWorld...
15:25:16: Настройки не изменились, этап qmake пропускается.
15:25:16: Запускается: «C:\Qt\Tools\mingw810_64\bin\mingw32-make.exe» -j4
C:/Qt/Tools/mingw810_64/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'C:/cpp/projectsQt/HelloWorld-Debug'
g++ -c -fno-keep-inline-dllexport -finput-charset=cp1251
-fexec-charset=cp1251 -Wconversion -g -std=gnu++1z -Wall -Wextra
-Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32
-DMINGW_HAS_SECURE_API=1 -DQT_QML_DEBUG -I../HelloWorld -I.
-I../../../Qt/6.1.0/mingw81_64/mkspecs/win32-g++
-o debug\HelloWorld.o ..\HelloWorld\HelloWorld.cpp
g++ -c -fno-keep-inline-dllexport -finput-charset=cp1251
-fexec-charset=cp1251 -Wconversion -g -std=gnu++1z -Wall -Wextra
-Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32
-DMINGW_HAS_SECURE_API=1 -DQT_QML_DEBUG -I../HelloWorld -I.
-I../../../Qt/6.1.0/mingw81_64/mkspecs/win32-g++ -o debug\main.o
..\HelloWorld\main.cpp
g++ -Wl,-subsystem,console -mthreads -o debug\HelloWorld.exe
debug/HelloWorld.o debug/main.o
mingw32-make[1]: Leaving directory 'C:/cpp/projectsQt/HelloWorld-Debug'
15:25:17: Процесс «C:\Qt\Tools\mingw810_64\bin\mingw32-make.exe» завершился успешно.
15:25:17: Прошло времени: 00:01.
Рис. 2.11. Результат компиляции на вкладке Вывод сборки
Компиляция в редакторе Qt Creator выполняется в несколько проходов. При первом проходе создается объектный файл HelloWorld.o, при втором — объектный файл main.o, а на третьем проходе на их основе создается EXE-файл. Все файлы можно найти в каталоге C:\cpp\projectsQt\HelloWorld-Debug\debug.
По умолчанию для проекта задается режим сборки Отладка. В этом режиме дополнительно сохраняется информация для отладчика и EXE-файл будет создан без оптимизаций. Когда программа уже написана и отлажена, нужно выбрать режим Выпуск. Для этого на панели слева из списка выбираем пункт Выпуск (см. рис. 2.10). Затем нажимаем кнопку Запустить. После сборки созданные файлы будут доступны в каталоге C:\cpp\projectsQt\HelloWorld-Release\release.
После изменения настроек при сборке в режиме Выпуск на вкладке Вывод сборки отобразятся следующие инструкции:
15:37:24: Выполняются этапы для проекта HelloWorld...
15:37:24: Запускается: «C:\Qt\6.1.0\mingw81_64\bin\qmake.exe»
C:\cpp\projectsQt\HelloWorld\HelloWorld.pro -spec win32-g++
"CONFIG+=qtquickcompiler"
Info: creating stash file C:\cpp\projectsQt\HelloWorld-
Release\.qmake.stash
15:37:24: Процесс «C:\Qt\6.1.0\mingw81_64\bin\qmake.exe»
завершился успешно.
15:37:24: Запускается: «C:\Qt\Tools\mingw810_64\bin\mingw32-make.exe» -f
C:/cpp/projectsQt/HelloWorld-Release/Makefile qmake_all
mingw32-make: Nothing to be done for 'qmake_all'.
15:37:24: Процесс «C:\Qt\Tools\mingw810_64\bin\mingw32-make.exe»
завершился успешно.
15:37:24: Запускается: «C:\Qt\Tools\mingw810_64\bin\mingw32-make.exe» -j4
C:/Qt/Tools/mingw810_64/bin/mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory 'C:/cpp/projectsQt/HelloWorld-
Release'
g++ -c -fno-keep-inline-dllexport -finput-charset=cp1251
-fexec-charset=cp1251 -Wconversion -O2 -std=gnu++1z -Wall -Wextra
-Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32
-DMINGW_HAS_SECURE_API=1 -I../HelloWorld -I.
-I../../../Qt/6.1.0/mingw81_64/mkspecs/win32-g++
-o release\HelloWorld.o ..\HelloWorld\HelloWorld.cpp
g++ -c -fno-keep-inline-dllexport -finput-charset=cp1251
-fexec-charset=cp1251 -Wconversion -O2 -std=gnu++1z -Wall -Wextra
-Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32
-DMINGW_HAS_SECURE_API=1 -I../HelloWorld -I.
-I../../../Qt/6.1.0/mingw81_64/mkspecs/win32-g++
-o release\main.o ..\HelloWorld\main.cpp
g++ -Wl,-s -Wl,-subsystem,console -mthreads -o release\HelloWorld.exe
release/HelloWorld.o release/main.o
mingw32-make[1]: Leaving directory 'C:/cpp/projectsQt/HelloWorld-Release'
15:37:25: Процесс «C:\Qt\Tools\mingw810_64\bin\mingw32-make.exe»
завершился успешно.
15:37:25: Прошло времени: 00:01.
В результате сборки в разных режимах были созданы два EXE-файла:
C:\cpp\projectsQt\HelloWorld-Debug\debug\HelloWorld.exe
C:\cpp\projectsQt\HelloWorld-Release\release\HelloWorld.exe
Первый файл содержит отладочную информацию и имеет размер 141 Кб. Второй файл не содержит отладочной информации и имеет размер 16 Кб. При компиляции второго файла была дополнительно выполнена оптимизация. Именно этот файл следует отдавать заказчикам, хотя запустить на исполнение из командной строки можно оба файла:
C:\book>C:\cpp\projectsQt\HelloWorld-Debug\debug\HelloWorld.exe
Hello, world!
C:\book>C:\cpp\projectsQt\HelloWorld-Release\release\HelloWorld.exe
Hello, world!
Результат запуска в редакторе Qt Creator доступен на вкладке Вывод приложения:
15:48:03: Запускается C:\cpp\projectsQt\HelloWorld-
Release\release\HelloWorld.exe ...
Hello, world!
15:48:03: C:\cpp\projectsQt\HelloWorld-Release\release\HelloWorld.exe
завершился с кодом 0
В заголовке вкладки Вывод приложения (рис. 2.12) есть кнопка с зеленым треугольником, с помощью которой можно запустить приложение. Кроме того, есть кнопка с красным квадратом, с помощью которой можно досрочно завершить работу приложения.
Рис. 2.12. Результат выполнения программы на вкладке Вывод приложения
Скачать учебник C++ в формате PDF