Search
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.
MinGW
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.
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.
qmake
V adresáři se zdrojovým souborem (případně soubory) spusťte qmake s volbou -project
-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
01-example.pro
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
Makefile
$ qmake 01-example.pro -spec win32-g++ "CONFIG+=debug"
qDebug()
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
release
Na vytvořený Makefile zavoláme make dodaný s kompilátorem
make
$ 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:
01-example.exe
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.
deployment
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šší.
cmake
CMakeLists.txt
Š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
build
$ mkdir build $ cd build $ cmake .. -G "MinGW Makefiles" $ mingw32-make
Po kompilaci je třeba opět provést deployment.