Qt Creator a konzolové aplikace: Porovnání verzí

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
m
Řádek 13: Řádek 13:
 
[[Soubor:Qt_Creator_Empty_Qt4_Project.png|center|377px]]
 
[[Soubor:Qt_Creator_Empty_Qt4_Project.png|center|377px]]
  
Po odsouhlasení zadaných parametrů vytvoří Qt Creator prázdný projetk, do kterého musím přidat C++ soubor, který bude obsahovat funkci <code>main</code> naší konzolové aplikace
+
Po odsouhlasení zadaných parametrů vytvoří Qt Creator prázdný projekt, do kterého musím přidat C++ soubor, který bude obsahovat funkci <code>main</code> naší konzolové aplikace
  
 
[[Soubor:Qt_Creator_add_new_c++.png|center|600px]]
 
[[Soubor:Qt_Creator_add_new_c++.png|center|600px]]
Řádek 20: Řádek 20:
  
 
[[Soubor:Qt_Creator_hello_cout.png|center|600px]]
 
[[Soubor:Qt_Creator_hello_cout.png|center|600px]]
 +
 +
== Kompilace konzolové aplikace pod Windows ==
 +
Pokud používáte Qt Creator pod operačním systémem Windows, je třeba pro správný běh konzolové aplikace doplnit do projektového souboru (.pro) následující řádky:
 +
 +
<pre>
 +
TEMPLATE = app
 +
win32:CONFIG += console
 +
</pre>
 +
 +
Pomocí proměnné TEMPLATE specifikujeme, že chceme, aby qmake generoval makefile, který bude sestavovat aplikaci a v proměnné CONFIG pak ještě upřesníme, že se bude jednat o konzolovou aplikaci.
 +
 +
Tento postup je nutný pouze pod Windows a chceme tedy docílit, aby při kompilaci pod jiným operačním systémem byl ignorován. K tomu slouží uvození řádku specifikací platformy (win32:, unix:, etc.)
 +
 +
== Odstranění závislosti na mingwm10.dll ==
 +
Qt Creator se při sestavování výsledného makefilu, řídí nastavením v konfiguračním souboru pro danou platformu a překladač. Pro platformu Windows a standardní překladač MinGW je to soubor "<QtHome>\qt\mkspecs\win32-g++\qmake.conf" (tento soubor nikdy neupravujte přímo, vždy raději využijte předefinování proměnných přímo z konkrétního projektového souboru tak, jak je ukázáno dále...)
 +
 +
<pre>
 +
CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release
 +
debug_and_release_target precompile_header
 +
QT += core gui
 +
</pre>
 +
 +
Jak je vidno, automaticky je přidáván include základních qt modulů, podpora předkompilovaných hlaviček a další. Při psaní jednoduchého konzolového programu, nejsou nutné a můžeme je přepsat (výsledný soubor bude menší).
 +
 +
<pre>
 +
TEMPLATE = app
 +
win32:CONFIG = console
 +
</pre>
 +
 +
Co však způsobuje závislost na sdílené knihovně mingwm10m.dll je podpora vláken a obsluha vyjímek, konkrétně import "-mthreads", který je definovaný v souboru qmake.conf:
 +
 +
<pre>
 +
QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads
 +
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl
 +
</pre>
 +
 +
Jedním ze způsobů jak tuto závislost odstranit je například vložení dalšího řádku s vypnutím této podpory do našeho projektového souboru:
 +
 +
<pre>
 +
win32:CONFIG+=exceptions_off
 +
</pre>

Verze z 9. 12. 2009, 20:41

Qt Creator je vývojové prostředí určené pro tvorbu platformově nezávislých grafických Qt aplikací. S vývojem klasických konzolových aplikací v podstatě nepočítá. Protože jde ale o uživatelsky velmi přívětivé prostředí s intuitivním možností ladění, je možné je použít pro výuku C++, kde jednoduché konzolové aplikace jsou prvním krokem k následnému vývoji aplikací s grafickým uživatelským rozhraním.

Úvodní stránka Qt Creator, která se zobrazí po spuštění je následující

Qt Creator.png

Pro založení nového projektu - konzolové aplikace zvolíme File --> New --> Empty Qt4 Project

Qt Creator New project.png

a zvolíme jméno projektu a adresář ve které má být umístěn

Qt Creator Empty Qt4 Project.png

Po odsouhlasení zadaných parametrů vytvoří Qt Creator prázdný projekt, do kterého musím přidat C++ soubor, který bude obsahovat funkci main naší konzolové aplikace

Qt Creator add new c++.png

Pro ladění máme nyní k dispozici vývojové prostředí Qt Creator včetně debugeru

Qt Creator hello cout.png

Kompilace konzolové aplikace pod Windows

Pokud používáte Qt Creator pod operačním systémem Windows, je třeba pro správný běh konzolové aplikace doplnit do projektového souboru (.pro) následující řádky:

TEMPLATE = app
win32:CONFIG += console

Pomocí proměnné TEMPLATE specifikujeme, že chceme, aby qmake generoval makefile, který bude sestavovat aplikaci a v proměnné CONFIG pak ještě upřesníme, že se bude jednat o konzolovou aplikaci.

Tento postup je nutný pouze pod Windows a chceme tedy docílit, aby při kompilaci pod jiným operačním systémem byl ignorován. K tomu slouží uvození řádku specifikací platformy (win32:, unix:, etc.)

Odstranění závislosti na mingwm10.dll

Qt Creator se při sestavování výsledného makefilu, řídí nastavením v konfiguračním souboru pro danou platformu a překladač. Pro platformu Windows a standardní překladač MinGW je to soubor "<QtHome>\qt\mkspecs\win32-g++\qmake.conf" (tento soubor nikdy neupravujte přímo, vždy raději využijte předefinování proměnných přímo z konkrétního projektového souboru tak, jak je ukázáno dále...)

CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release 
debug_and_release_target precompile_header
QT += core gui

Jak je vidno, automaticky je přidáván include základních qt modulů, podpora předkompilovaných hlaviček a další. Při psaní jednoduchého konzolového programu, nejsou nutné a můžeme je přepsat (výsledný soubor bude menší).

TEMPLATE = app
win32:CONFIG = console

Co však způsobuje závislost na sdílené knihovně mingwm10m.dll je podpora vláken a obsluha vyjímek, konkrétně import "-mthreads", který je definovaný v souboru qmake.conf:

QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl

Jedním ze způsobů jak tuto závislost odstranit je například vložení dalšího řádku s vypnutím této podpory do našeho projektového souboru:

win32:CONFIG+=exceptions_off