Zdrojové kódy příkladů jsou k dispozici na gitlabu.
Tato sekce je zaměřena na programování v operačních systémech MS Windows. V ostatních majoritních OS bude postup velmi podobný (některé programy se budou jmenovat jinak). Předpokládá se použití kompilátoru MinGW
a správné nastavení cest v OS.
Mějme následující jednoduchou aplikaci v Qt, pro kterou vytvoříme předpis automatického sestavení. Pro každou Qt aplikaci je vhodné mít extra adresář, v tomto případě 01-button
.
#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app (argc, argv); QLabel *pLabel = new QLabel("Hello Qt!"); pLabel->show(); // return app.exec(); }
qmake
je program pro práci s Qt projekty, dodávaný jako součást distribuce. Od verze Qt6 je doporučenou jako sestavovací program využít cmake
(viz níže), qmake
je ale nadále součástí distribuce a může prokázat dobré služby.
V adresáři se zdrojovým souborem (případně soubory) spusťte qmake
s volbou -project
$ cd 01-button $ qmake -project
V adresáři se objeví projektový soubor, pojmenovaný podle názvu aktuálního adresáře, v tomto případě tedy 01-button.pro
. Klíčové části jeho obsahu jsou
TEMPLATE = app TARGET = 01-example INCLUDEPATH += . # Input SOURCES += main.cpp
QT += widgets
Tento soubor je multiplatformní, použijeme ho pro vygenerování platformově závislého Makefile
$ qmake 01-example.pro
-spec win32-g++
.
qDebug()
, přidejte do projektu CONFIG += console
.
V adresáři se kromě souboru Makefile
objevily také adresáře debug
a release
, do kterých budou směrovány výsledné binární soubory. Debug verze bude obsahovat ladicí symboly a bude tudíž mírně objemnější, release verze ladicí symboly neobsahuje. Defaultně se vytváří release verze, volbu verze lze ovlivnit v projektu např. volbou CONFIG+=debug
. (Konfigurační volby lze dodávat i jako parametr qmake
.)
Na vytvořený Makefile
zavoláme make
dodaný s kompilátorem
$ mingw32-make
Pokud vše proběhlo bez chyby, v adresáři debug
nebo release
se objevil soubor 01-button.exe
. Tento soubor ale nepůjde pravděpodobně spustit:
Ke správnému běhu aplikace v prostředí MS Windows je třeba provést deployment
, tj. vytvořit podmnínky ve kterých má aplikace dostupné potřebné knihovny. Podrobnosti lze nalézt na stránkách Qt.
Pokud je vše správně nastaveno, stačí provést následující příkaz (buď s absolutními cestami, nebo v adresáři s aplikaci.
$ windeployqt debug\01-button.exe
Program dodá do adresáře aplikace potřebné knihovny v debug
verzi. Aplikaci lze pak spustit
cmake
je univerzální sestavovací program, který pracuje na základě předpisu v souboru, defaultně pojmenovaném CMakeLists.txt
. Šablona CMakeLists.txt
pro překlad Qt aplikace pomocí cmake
by mohla vypadat třeba takto:
cmake_minimum_required(VERSION 3.16.0) project(01-button VERSION 1.0.0 LANGUAGES CXX) # set(CMAKE_BUILD_TYPE Debug) # set(CMAKE_BUILD_TYPE Release) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) # set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) find_package(Qt6 COMPONENTS Widgets REQUIRED) add_executable(01-button main.cpp) target_link_libraries(01-button PRIVATE Qt6::Widgets)
Vzhledem k tomu, že během běhu cmake
produkuje řadu dalších souborů, doporučeným postupem je vytvořit podadresář (např. build
) a cmake
spouštět odtud
$ mkdir build $ cd build $ cmake .. -G "MinGW Makefiles" $ mingw32-make
Po kompilaci je třeba opět provést deployment.