Portál AbcLinuxu, 26. dubna 2024 01:57

Srovnání KDevelop a Qt Creator

15. 2. 2011 | Tomáš Poledný
Články - Srovnání KDevelop a Qt Creator  

Pokud chcete vyvíjet aplikace v C++ pro Qt (KDE) a používat IDE, pravděpodobně budete stát před volbou jaké IDE zvolit. Vybral jsem dvě nejznámější, která vám představím.

Obsah

Obě IDE jsou určena pro různé skupiny uživatelů a tomu odpovídají i jejich funkce. KDevelop je univerzální vývojové prostředí vhodné pro vývoj knihoven, konzolových i grafických programů. Qt Creator, jak již název napovídá, je spíše vhodný pro vývoj aplikací využívající Qt, avšak to neznamená, že by se v něm nedalo vyvíjet nic jiného. Srovnání probíhá v KDevelop 4.2 a Qt Creator 2.1 beta, což jsou nejnovější verze obou IDE.

KDevelop

link

KDevelop vyžaduje KDE (resp. knihovny). Je založeno na KDevPlatform. Na této platformě by měla být postavená i velmi očekávaná Quanta Plus pro KDE 4. Oproti předchozí verzi, která podporovala mnoho jazyků, nová verze 4 podporuje C/C++ a pomocí pluginu i PHP. Zaměřil jsem se však pouze na  C/C++. Nemá žádný integrovaný GUI designer, takže pro úplného začátečníka, který si chce GUI naklikat, není KDevelop moc vhodný. Prostředí je členěno do tři režimů a to Code, Debug a Review. V každém režimu si můžete nastavit vlastní toolbar.

Práce s kódem

link

KDevelop nejvíce vyniká při práci s kódem. Nemá cenu popisovat základní věci jako odsazování nebo od/zakomentování a proto vyberu funkce, které mě zaujaly nebo jsou užitečné. Jako velmi užitečnou funkci vidím zvýrazňování, které vám obarví každou proměnnou na jinou barvu, takže je váš kód barevený jako duha. Překvapivě je to celkem příjemné: hlavně pokud máte více krátkých proměnných s podobným názvem, tak je to velmi přehledné. Doplňování textu je na skvělé úrovni. Zobrazí se vám nejen možné doplnění, ale u metod i dokumentace a hlavně oproti Qt Creatoru i návratové typy. Pomocí zobrazeného dialogu se navíc můžete proklikat k podrobné dokumentaci. Doplňují se i názvy (cesty) knihoven.

Další super vlastností je formátování kódu podle vámi zvolené šablony. Toto přispívá k jednotnosti a přehlednosti kódu, což v Qt Creatoru úplně chybí. Pokud upravíte název metody v hlavičkovém souboru, nabídne se vám možnost řešení, resp. přejmenování jinde. Samozřejmostí je přejmenování názvu metody, třídy či proměnné v celém projektu, při kterém se vám zobrazí okno s vyhledanými možnostmi změn. KDevelop vám dokonce dokáže označit i některé sémantické chyby, které vám podtrhne a nabídne řešení.

Jestliže je váš textový soubor velmi rozsáhlý, jistě oceníte podporu záložek řádků. Textový soubor zmiňuji úmyslně, protože se záložky zobrazují jen v rámci jednoho souboru.

KDevelop obsahuje přehlednou navigaci ve třídách a metodách. Je zde možnost použití rychlé navigace, což je vyhledávací pole, do kterého zadáte, co chcete najít. Např. název metody a postupně se vám začne zobrazovat vše, co v názvu obsahuje zadaný text.

Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator

Správa projektu

link

Jestliže vytváříte nový projekt, zobrazí se vám přehledný průvodce. Ten dá na výběr z několika předpřipravených šablon. Šablony si můžete přidat i sami. To ovšem nelze nikterak jednoduše za pomocí KDevelop. Již přítomné šablony jsou uloženy v mém případě (záleží podle toho kde máte KDE nainstalované) v /usr/share/kde4/apps/kdevappwizard/templates/ a jsou zabalené. Syntaxi u nich snadno pochopíte sami. Aby se vám však šablona i přidala do KDevelop, musíte ještě vytvořit soubor s nastavením v ~/.kde/share/apps/kdevappwizard/template_descriptions/. Inspirujte se již přítomnými soubory. Pozor, název souboru s nastavením šablony se musí shodovat s názvem šablony, jinak se vám šablona v KDevelop nezobrazí.

Pokud již máte šablonu vybranou, nastavenou cestu a název aplikace, můžete pokračovat dál. Jestliže chcete váš projekt spravovat některým správcem verzí, musíte si ho zde navolit, protože později to již není možné. Můžete také načíst projekt přímo z úložiště. Na výběr je dokonce i možnost importovat projekty přímo z svn KDE. Jestliže chcete vytvořit novou třídu, můžete použít přítomného pomocníka, v kterém se dá nastavit téměř vše, co pro vytvoření třídy potřebujete včetně typu dědičnosti. Můžete si také vybrat, které z děděných metod chcete přetížit. Pokud třída od ničeho nedědí, jsou přítomny obvyklé metody jako je konstruktor, kopírovací konstruktor, destruktor, operátor přiřazení a porovnání. Tyto metody se vám poté vygenerují. Další důležitou položkou při vytváření nové třídy je volba licence. Máte na výběr z nejznámějších svobodných licencí. Licenci si můžete samozřejmě přidat vlastní.

Pro sestavení projektu máte na výběr pouze CMake. Pokud máte svůj projekt spravovaný svépomocí za pomoci vlastního Makefile, můžete ho do KDevelop importovat. Při importu máte možnost zvolit si, zda chcete projekt sestavovat zapomocí make, CMake nebo svépomocí. Pokud vyberete spravování za pomocí make, KDevelop za vás nic neudělá, takže si vše musíte nastavit sami. Jestliže projekt sestavujete za pomocí CMake, zobrazí se vám možnosti CMake v nastavení projektu. Bohužel je zde pouze možnost nastavení proměnných CMake např. CMAKE_BUILD_TYPE, CMAKE_INSTALL_PREFIX. Zobrazení některých dalších proměných můžete aktivovat pomocí kliknutí na Show Advanced a vybrat Show Advanced Values.

Proměnné však nejde nikterak přidávat, můžete u nich pouze editovat hodnoty. Celkově je to nespolehlivé, protože se mi párkrát stalo, že u projektu nebyla ani jedna proměnná. Proměnné se nejspíše vybírají podle CMakeList.txt, protože pokud vyvíjíte aplikaci pro KDE, zobrazí se vám zde i příslušné proměnné, avšak pokud v něm něco změníte, tak KDevelop na to nedokáže zareagovat. Je to způsobeno tím, že si nastavené proměnné ukládá do souboru s nastavením projektu. Je zde možnost vybrat si, kde CMake má hledat své moduly.

V nastavení projektu se skrývá položka Make, kde máte možnost si nastavit podrobnosti k make (např. instalovat jako root atp.). Pokud vytvoříte soubor (třídu), automaticky se vás prostředí zeptá, zda ho chcete přidat a spravovat za pomocí CMake. Takže nemusíte o CMake vědět téměř nic. Navíc funguje doplňování a nápověda i pro CMake, proto jsou vlastní úpravy jednodušší. Pokud vás CMake zajíma více, již na AbcLinuxu vyšel článek.

Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator

Debugování a možnosti spuštění

link

Debugování zvládá KDevelop skvěle. Vše je realizováno za pomocí GDB. Jestliže se vám nebude dařit debugování spustit, budete si muset debugování nastavit v Launch Configurations. Zde si můžete přidat argumenty, se kterými se má vaše aplikace spouštět, nebo navolit spouštění v terminálu. Nastavení spouštění lze určit globálně nebo pro každý projekt zvlášť. Pokud chcete přidat breakpoint, stačí kliknout před řádek, kde se vám poté zobrazí "beruška". Je zde také možnost zobrazit si GDB konzoli, takže pokud jste zvyklí používat GDB, nemusíte měnit své zvyky. Je tu i možnost zobrazit přímo instrukce (Diassembly). Samozřejmostí je stack a sledování proměnných. Proměnné můžete sledovat i přímo v kódu, stačí najet na vybranou proměnnou myší a zobrazí se vám její hodnota. Takto můžete zapnout sledování proměnné nebo nastavit zastavení při její změně. Pokud vám nějaký nástroj bude chybět, pravděpodobně je skrytý. Zobrazíte ho v hlavní nabídce pod položkou Window => Tool Views nebo kliknutím pravým tlačítkem myši na libovolnou lištu (Dock). Celé debugování mi nepřijde moc přehledné, ale dá se na něj zvyknout.

Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator

Správa verzí

link

Pro správu verzí jsou přítomné pluginy pro Git, CVS a Subversion (další si můžete přidat opět pomocí pluginů). Je v tom ovšem háček, správu verzí musíte vybrat již při vytváření projektu, později již nejde správa verzí přidat. Toto se dá řešit tím, že správu projektu si nastavíte sami odjinud. Pokud své změny budete chtít commitnout, přepne se KDevelop do režimu Review. V něm je vše velmi přehledné. Zobrazí se vám Diff a vše co jste změnili a máte možnost cokoliv vrátit zpět. Implementace Gitu je na velmi dobré úrovni. Pokud ovšem bude chtít změnu potvrdit a nevyplníte pole Commit Message, nejenže se aktualizace neodešle, ale upozorní vás to pouze ve výpisu pohledu Version Control. Díky tomu se vám může stát, že to velmi snadno přehlédnete a důležitý commit neprovedete.

Další pěkná vlastnost je Annotation, která vám zobrazí verze, kdy byl řádek přidán (resp. upraven). Pokud najedete myší na vybranou verzi, zobrazí se vám komentář, kdy a kdo commitnul tento řádek. Bohužel to není moc dokonalé, protože když něco upravíte vy, tak na to KDevelop nedokáže zareagovat. Mnohem praktičtější by bylo, kdyby se zobrazovaly rozdíly oproti předchozí verzi. Můžete vytvářet nové větve nebo je odstraňovat. Nabízí se i možnost nechat si zobrazit historii změn.

Celkově je správa verzí v KDevelop pro mě zklamáním. Je to prostě nedotažené. Ať již se jedná o přidání správy do již vytvořeného projektu, tak i absence jakéhokoliv nastavení. Díky tomu si nemůžete nastavit ani pod jakým jménem budete změny zasílat.

Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator

Shrnutí

link

KDevelop je velmi pokročilé IDE, ovšem musíte si ho přizpůsobit. Pokud si ho však nastavíte k obrazu svému, bude velmi schopný. Některým věcem musíte nejdřív přijít na kloub. Navíc se dá očekávat, že další jazyky přibudou. Obsahuje také pluginy, u kterých se dá do budoucna očekávat přidání dalších zajímavých vlastností. Pokud chcete, můžete se podívat na Git nebo svn KDE, kde již některé pluginy naleznete. Většina z nich je však v experimentálním stavu. Bohužel se mi v současnosti stává, že KDevelop občas spadne, ale je to jen při mimořádných úkonech. Celkově na mě však KDevelop působí nedotaženým a přeplácaným dojmem a bude muset ujít ještě dlouhou cestu do perfektního IDE.

Qt Creator

link

Qt Creator je vyvíjen společností Qt Development Frameworks (dříve Qt Software a ještě předtím Trolltech), která je vlastněna firmou Nokia. O Qt Creatoru a jeho použítí zde již vyšel článek. Kromě Qt pro desktop obsahuje podporu pro Symbian a Meamo/Meego. Pro ně je obsažen Qt Simulator, což je emulátor prostředí Nokia. V současnosti podporuje pouze C++ a QML, což je jazyk založený na JavaScriptu. Nabízí se tedy možnost použít Qt Creator i pro JavaScript. Samozřejmostí je tedy i podpora pro Qt Quick. Toto jsem netestoval a zaměřil jsem se hlavně na C++ a Qt pro desktop. Celé IDE je velmi intuitivní a jednoduché, již od prvního spuštění se zde budete orientovat. Bere si to ovšem svou daň. Rozhraní máte již pevně dané a nedá se téměř nic přesunout nebo přidat. Není zde dokonce ani žádná nástrojová lišta, což si myslím, že je škoda, protože by se hodila. Dále někomu bude vadit absence karet, která je nahrazena vyjíždějícím dialogem.

Provázanost s Qt je znát všude a to hlavně v integraci starého známého Qt Designeru, kde si můžete navrhnout svůj widget. Pokud chcete, můžete si nechat vygenerovat metodu (slot), která bude reagovat na určený signál. Stačí kliknout na objekt pravým tlačítkem a zvolit Go to slot... . Toto ocení především začátečníci, protože jim to celý vývoj velmi usnadní. Přítomný je i přehledný správce zdrojů (resource). V něm můžete přidat všechny potřebné soubory pro váš projekt.

Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator

Práce s kódem

link

Práce s kódem není na takové úrovni jako u KDevelop, ale i tak je velmi dobrá. Jako velkou nevýhodu vidím již zmíněnou absenci formátování kódu. Dále mi vadí, že při doplňování metod se vám nikterak nezobrazí návratový typ, což je někdy nepříjemné. Návratový typ spolu s možnými parametry se zobrazí pouze tehdy, když zadáváte parametry metody. Další vychytávkou je, že pokud chcete doplnit nějaký název, ve kterém jsou velká písmena, stačí vám psát pouze tato písmena. Například pokud se metoda jmenuje addToolBar, stačí napsat aTB. Musíte však dodržet velká písmena.

Pokud máte vybranou proměnou, třídu nebo metodu a stisknete F1, zobrazí se vám k ní nápověda. Co jistě každý ocení, je možnost vytvořit šablonu licence. Bohužel lze mít vybranou pouze jednu takovouto šablonu. V šabloně můžete použít proměnné %YEAR%, %MONTH%, %DAY%, %DATE%, %USER%, %FILENAME%, %CLASS% a %$VARIABLE% (hodnota proměnné VARIABLE prostředí), které se vám v nové třídě nahradí příslušnými hodnotami. Někteří uživatelé jistě ocení přítomnost Fake Vim, které simuluje prostředí Vimu. Pokud si jej zapnete, zobrazí se vám vpravo dole "příkazová řádka" pro Vim.

Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator

Správa projektu

link

V náhledu aktivních projektů jsou soubory přehledně rozděleny do kategorií (Headers, Sources, Forms, Resources). Vytváření nového projektu je přehledné a autoři pomysleli téměř na vše včetně pluginů pro Qt Creator. Máte na výběr z předpřipravených projektů např. Mobile Qt Application nebo Qt Console Application. Velmi mě potěšila přítomnost Qt Unit Test. Toto v KDevelop úplně chybí. Samozřejmě máte možnost importovat projekt ze správce verzí. Můžete si také zvolit, jaké verze Qt chcete v projektu používat. Verze se dají přidávat v nastavení.

Stejně jako v KDevelop je i zde přítomen asistent pro vytváření nových tříd. Ten sice není tak propracovaný, ale svou práci odvede. Jde v něm nastavit vše potřebné, jako je dědění. Škoda jen, že se v něm nedá nastavit, které metody vygenerovat stejně jako v KDevelop.

Pro někoho může být problém chybějící přímá podpora pro CMake. Je zde přítomný qmake, o kterém nemusíte vědět naprosto nic, protože Qt Creator udělá vše za vás. Pokud byste i tak chtěli používat cmake a nesestavovat aplikaci mimo IDE, můžete si příkaz přidat v kartě Projects. Takto se dá použít libovolný nástroj pro sestavení projektu nebo projekt s vytvořeným CMakeList.txt naimportovat a Qt Creator se již o vše postará za vás. Nebude vám ale fungovat automatické přidávání nových souborů, které si budete muset dělat sami. To by ale pro programátora, který bude CMake vyžadovat, neměl být problém.

V kartě Projects se kromě Build Settings skrývají Run Settings, Project Editor Settings (pro nastavení kódování textových souborů) a Dependencies. V Build Settings se dá nastavit, jakou verzi Qt chcete použít. Velmi dobře je vymyšleno a navrženo nastavení posloupnosti úkonů, které se mají vykonat při sestavování projektu. Nalézá se zde i nastavení pro Make Clean a nastavení proměnných prostředí (environment). Run Settings slouží pro nastavení, jak se má projekt spouštět. Můžete přidat různé argumenty nebo zapnout spuštění v terminálu a také je tu nastavení proměnných prostředí. Možností spuštění může mít každý projekt více. V Dependencies se dají přidat závislosti na otevřené projekty. Nastavení projektu je díky chytře navrženému rozhraní opravdu hračkou a bez velkého zkoumání nastavíte vše, co bude potřebovat.

Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator Srovnani KDevelop a Qt Creator

Debugování a možnosti spuštění

link

Debugování je zde velmi přehledné a intuitivní. Oproti KDevelop se s debugováním dobře pracuje a zvládne to i naprostý laik. Můžete si také nechat zobrazit GDB konzoli, do ní však nelze psát příkazy pro GDB. Lze se přepnout ze zdrojového kódu do instrukcí a vykonávat úkony po instrukcích. Jestliže chcete sledovat proměnné a jejich hodnoty, poradí si Qt Creator i se zobrazením hodnot u objektů jako je QString nebo objektů ze standardní knihovny. Samozřejmostí je pohled na aktuální stack a vlákna. Přidávání breakpointů můžete provádět buď obvyklým kliknutím před řádek nebo v přehledném dialogu. Můžete si nastavit zastavení na adrese nebo funkci. Debugování v Qt Creatoru je prostě hračka.

Ikona počítače vlevo dole slouží pro přepnutí, který projekt se má aktuálně sestavit nebo debugovat. Máte na výběr z verzí Qt, které použijete pro sestavení projektu a jak chcete aby se projekt spouštěl.

Srovnani KDevelop a Qt Creator

Správa verzí

link

Pro správu verzí je zde na výběr z Git, CVS, Subversion, Perforce a Mercurial. Správa verzí trpí stejnými neduhy jako u KDevelop. Pokud chcete například použít subversion, musíte někde jinde subversion pro projekt nastavit (např. za pomocí svn). Až teprve poté se vám nabídka zobrazí v menu. Pokud vám však stačí pouze lokální správce verzí, můžete použít Git nebo Mercurial, pro které jsou v nabídce možnosti vytvořit lokální úložiště (Create Repository). Pokud ovšem chcete soubory nahrávat i někam jinam i toto musíte nastavit někde jinde. Jestliže si vše nastavíte, bude pro vás práce se správci verzí jednoduchá a intuitivní. Rozdíly oproti předchozí verzi jsou zvýrazněny před řádkou zelenou nebo červenou linkou. Tato linka je však velmi tenká a není to moc přehledné. Stejně jako je tomu v KDevelop, pokud budete chtít commitnout změnu a nevyplníte poznámku, nebudete na to upozorněni jinak než výpisem červeným písmem v konzoli Version Control. Prostředí se netváří jako v KDevelop, jako by vše proběhlo správně a formulář se změnami se nezavře. Pokud chcete získat Diff stačí při commitování vybrat soubory a kliknout na tlačítko Diff Selected File.

Srovnani KDevelop a Qt Creator

Shrnutí

link

Qt Creator je vynikající vývojové prostředí pro vývoj pod Qt. Škoda jen, že nepodporuje Python a PyQt či PySide, které by z Qt Creatoru udělalo velmi schopný nástroj pro rychlý vývoj grafických aplikací. Další vadou na kráse je, že se neobejdete bez základních znalostí správců verzí. To celkem nezapadá do konceptu Qt Creatoru, který je jinak ve všem velmi intuitivní a jednoduchý. Pokud vás některé funkce zajímají podrobněji, stačí nahlédnout do přehledné dokumentace ke Qt Creatoru.

Závěrem

link

Jak již jsem uvedl na začátku, obě vývojová prostředí jsou pro trochu jiné uživatele. Obě obsahují zajímavé funkce, takže záleží jen na vás, čemu dáte přednost. Zda bezvadné práci s kódem v případě KDevelop či jednoduchosti Qt Creatoru. Pokud ovšem chcete vyvíjet pouze Qt GUI aplikace, určitě sáhněte po Qt Creatoru, který vám vše velmi usnadní. Myslím si, že v budoucnu KDevelop integruje také designer a jistě přibude podpora více jazyků a stane se z něj více univerzální IDE. Mrzí mě, že ani jedno IDE nepomyslelo na Valgrind či generování dokumentace. Já osobně používám obě vývojová prostředí, každé pro jinou práci. V současnosti je to asi nejlepší varianta.

Další články z této rubriky

Týden na ITBiz: Svět IT a burzy, umělá inteligence, Nvidia a outsourcing
Linuxové foto novinky: pozvolná evoluce
PCLinuxOS 2017.2 MATE - tak trochu zvláštní linuxová distribuce
Krátký pohled na Fedoru 25, Wayland a GNOME 3.22
Naprosto ničím nezajímavé Lubuntu 16.10

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.