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-example
.
#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.
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
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"
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:
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-example.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
. 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.