====== 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.