====== QT - kompilace aplikace ======
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.
===== Příklad =====
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-example''.
#include
#include
int main(int argc, char *argv[])
{
QApplication app (argc, argv);
QLabel *pLabel = new QLabel("Hello Qt!");
pLabel->show();
//
return app.exec();
}
===== qmake =====
''qmake'' je program pro práci s Qt projekty, dodávaný jako součást distribuce.
V adresáři se zdrojovým souborem (případně soubory) spusťte ''qmake'' s volbou ''-project''
$ cd 01-example
$ qmake -project
V adresáři se objeví projektový soubor, pojmenovaný podle názvu aktuálního adresáře, v tomto případě tedy ''01-example.pro''. Klíčové části jeho obsahu jsou
TEMPLATE = app
TARGET = 01-example
INCLUDEPATH += .
# Input
SOURCES += main.cpp
Do projektového souboru je potřeba dodat řádek ''QT += widgets''
Tento soubor je multiplatformní, použijeme ho pro vygenerování platformově závislého ''Makefile''
$ qmake 01-example.pro -spec win32-g++ "CONFIG+=debug"
Pokud je v aplikaci použit ladící výstup pomocí ''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.
Na vytvořený ''Makefile'' zavoláme ''make'' dodaný s kompilátorem
$ mingw32-make
Pokud vše proběhlo bez chyby, v adresáři ''debug'' se objevil soubor ''01-example.exe''. Tento soubor ale nepůjde pravděpodobně spustit:
{{ :courses:b2b99ppc:howtos:qt_08_error.png?400 |}}
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 [[https://doc.qt.io/qt-5/windows-deployment.html|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-example.exe
Program dodá do adresáře aplikace potřebné knihovny v ''debug'' verzi. Aplikaci lze pak spustit
{{ :courses:b2b99ppc:howtos:qt_09_running.png?100 |}}
===== cmake =====
''cmake'' je univerzální sestavovací program, který pracuje na základě předpisu v souboru, defaultně pojmenovaném ''CMakeLists.txt''. Na rozdíl od ''qmake'' je třeba mu dodat informace o cestách ke knihovnám. Postup pro jiné OS než MS Windows bude obdobný, možná jednodušší.
Šablona ''CMakeLists.txt'' pro překlad Qt aplikace pomocí ''cmake'' by mohla vypadat třeba takto:
set(CMAKE_PREFIX_PATH C:\\qt5\\5.14.0\\mingw73_64)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_VERBOSE_MAKEFILE ON)
set(Qt5Widgets_DIR C:\\qt5\\5.14.2\\mingw73_64\\lib\\cmake\\Qt5Widgets)
project(01-example)
find_package(Qt5Widgets)
add_executable(01-example WIN32 main.cpp)
target_link_libraries(01-example Qt5::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.