4. diel - Céčko a Linux - Code :: Blocks
V minulej lekcii, Céčko a Linux - Debugging , sme debuggovali. Doteraz sme programovali bez IDE - iba s použitím terminálu, editora a pomocných nástrojov. V tomto, už štvrtom diele, si ukážeme Code :: Blocks. Je to relatívne jednoduché prostredie, ktoré vás hneď nezahltí, ale zároveň ponúka snáď všetko, čo môže programátor potrebovať. Oproti zložitejším prostredím za vás nepíše žiadny kód (ale vie napovedať názvy funkcií), čo je podľa môjho názoru pre začiatočníkov najvhodnejšie - je dôležité pochopiť základy a vedieť ich využívať, nie si len "naklikať tlačidlovú aplikáciu" a pripísať tam k OnClick pár riadkov, čo niečo robia. Pravda, je to výrazne pohodlnejšie a rýchlejšie aplikáciu vytvoríte, ale z mojej vlastnej skúsenosti to nie je príliš dobré pre výučbu. V tomto tutoriále teda budeme tvoriť konzolové aplikácie s využitím iba štandardných knižníc. Spomenul by som ešte, že v tomto diele nie sú nevyhnutne potrebné znalosti z prvých troch dielov (aj keď sa vám budú určite hodiť), takže ak nechcete terminál a textový režim ani vidieť, ničomu to nevadí a môžete pokračovať až od tohto dielu.
Code :: Blocks si môžeme nainštalovať buď cez konzolu (viď. Tutoriál Linux) alebo pomocou Ubuntu Software Center. Ako prekladač budeme používať GNU GCC, ktorý by už mal byť nainštalovaný. Ak nie a neviete, ako ho doinštalovať, pozrite sa na úvodný článok, v ktorom je všetko ukázané.
Po spustení Code :: Blocks sa nám zobrazí nasledujúce okno.
Nastavenie Code :: Blocks
Hneď zo začiatku sa pozrieme do nastavení prekladača. Settings->
Compiler-> Compiler settings-> Other options. Tu napíšeme
-std=c99 -Wall -Wextra -pedantic
- -std = C99 nastaví používaný štandard jazyka
- -Wall zapne produkciu varovných správ - upozorní nás na veľa chýb a potenciálnych problémov
- -Wextra zapne čiastočnú sémantickú kontrolu a produkciu ďalších varovanie
- -pedantic vynúti striktné využitie nastaveného štandardu (dôležité pre prenositeľnosť programu na iné platformy) - nedovolí nám napríklad využiť tzv. platform-specific funkcie (viazané na platformu)
Potom si odporúčam nastaviť automatického ukladania. Settings-> Environment-> Autosave. Nastavte si to každý tak, ako vám to vyhovuje. Ja osobne používam celkom agresívne nastavenie. Keď nerozmýšľate, ale píšete rovno kód, môžete toho aj za 5 minút napísať veľa a naštve to, keď o to prídete.
Vytvorenie projektu
Tak ... Máme nastavené (samozrejme si v nastavení môžete hrať aj ďalej, ale toto zatiaľ stačí.) Ďalšie logický krok asi bude vytvoriť si nový projekt. (Chceme niečo napísať, že?) Vyberieme teda Create a new project. "Vyskočí" na nás veľké množstvo možností, aký projekt chceme vytvoriť. Nás bude zaujímať Console application.
V ďalšom okne vyberieme C a dáme Next. Ďalej si vyberieme zložku pre umiestnenie projektu (v tej sa vytvorí podpriečinok s názvom projektu) a zadáme názov projektu. Názov súboru sa vyplnia automaticky (môžeme ho ale samozrejme upraviť). Je dobrým zvykom vyberať mená bez diakritiky a medzery nahrádzať podčiarknikom (nejako takto: pokusny_projekticek).
Posledný úkon bude výber kompilátora. Necháme defaultný - GNU GCC. Zaujímavé sú konfigurácie.
- Debug - do kompilované binárky pridá debuggovací informácie, neprebieha žiadna optimalizácia kódu (v praxi pridá do nastavenia kompilátora -g)
- Release - oproti debug naopak odstráni maximum nepotrebných informácií (výsledkom je menší súbor) a zapne optimalizácia kódu (prepínač -O2)
Po potvrdení sa prostredie zmení - v ľavej časti pribudol náš projekt a zmizla úvodná obrazovka.
Kompilácie projektu
Než pôjdeme ďalej, pozrieme sa trochu bližšie na možnosti kompilácie.
- Build - preloží vybraný projekt
- Run - spustí vybraný projekt (výhodné, keď napríklad testujeme program s rôznymi vstupmi - ak je program rozsiahlejšie, alebo používame Release, kompilácia by zdržovala)
- Build and run - preloží a spustí vybraný projekt Rebuild - zmaže všetky súbory a znovu skompiluje celý projekt (napr. Keď zmeníme nastavenie kompilátora)
- Abort - preruší bežiaci proces (pomocou tohto môžeme ukončiť program, napr. Keď sa dostane do nekonečného cyklu)
- Posledná možnosť je vybrať Build configuration (alebo tiež Target) - my tu máme Debug a Release. V tejto konfigurácii potom bude prebiehať kompilácie.
Vidíme pred sebou vzorový kód pre Hello world. Klikneme na Build (Ctrl + F9) a všimneme si spodnej časti okna - Logs & others. Tu sa vypisujú všetky informácie o tom, čo sa deje. V budúcnosti tu nájdeme napríklad chybové hlášky prekladača.
Zatiaľ si môžeme všimnúť tejto riadky:
gcc -g -std=c99 -Wall -Wextra -pedantic -c /media/sf_FIT/C/ITNetwork/uvod/main.c -o obj/Debug/main.o
Vidíme, že naše nastavenie kompilátora sa naozaj aplikovalo pri preklade projektu. Ak sa pozrieme do zložky projektu, zistíme, že sa nám v priečinku bin / Debug objavila spustiteľná binárky (spustiť ju môžeme z terminálu). Zložku vol môžeme nateraz ignorovať.
Spustenie projektu z terminálu
Otvoríme si terminál, presunieme sa do zložky s projektom / bin / Debug a program spustíme (./název_projektu). Mimochodom, toto si môžete veľmi urýchliť a uľahčiť aplikácií nautilus-open-terminal (viď. Prvý diel). Bude to vyzerať nejako takto.
Spustenie projektu v Code :: Blocks
Druhou (a rýchlejší) možnosťou je spustiť projekt priamo z nášho vývojového prostredia. Klikneme na Run (Ctrl + F10) a náš program sa spustí v xterm. Ten nám navyše ukáže aj ako dlho trvalo vykonanie celého programu, jeho návratovú hodnotu (návratovú hodnotu funkcie main) a tiež ho pozastaví, takže sa hneď nezavrie a my sa tak môžeme pozrieť, čo vypísal.
Spustenie s argumentmi
V ďalších dieloch si ukážeme, ako pracovať s argumentmi programu - konzolová aplikácie by sa vo väčšine prípadov nemala užívateľa na nič pýtať a všetok vstup a nastavenie by malo byť realizované práve skrze argumenty. V Code :: Blocks je možné nastaviť argumenty programu cez dialógové okno Project-> Set program 's arguments. Tu si vyberieme pre ktorú konfiguráciu chceme nastavovať argumenty. Tie zapíšeme do Program arguments: Jednotlivé argumenty sú oddelené medzerou. Pri ďalšom spustení programu sa spustí sa argumenty, ktoré sme zadali.
Ako presne sa aplikácia spustila nájdeme v Logu. V našom prípade sa nám
objaví uvod/bin/Debug/uvod argument1 argument2
(samozrejme plus
celá cesta).
Konfigurácia
Pri vytváraní projektu sme sa stretli s konfiguráciami debug a release. Nič nám však nebráni vo vytvorení nových, vlastných konfigurácií (targets, cieľ). Môžeme je vytvoriť vo vlastnostiach projektu. Project-> Properties
Prvá možnosť je vytvoriť úplne novú a všetko nastaviť ručne. Stačí kliknúť na Add. Výrazne jednoduchšie je ale použiť Debug alebo Release ako vzor. Ak to chceme urobiť, klikneme na Duplicate. Tým nám vznikne kópie a my si potom napríklad môžeme nastaviť niekoľko konfigurácií s rovnakým nastavením, ale inými argumenty (pretože sme leniví to zakaždým prepisovať) alebo aj iným nastavením kompilátora. To môžeme zmeniť v Project-> Build options. Nová konfigurácia sa tiež objaví v sekcii Build, kde projekt Kompiluje a spúšťame.
Tak ... To by bolo dnes asi všetko. Je to jednoduché a prehľadné, že? Vývojové prostredie nám môže mnohokrát uľahčiť prácu (ale všeobecne platí, že na menšie veci je zbytočné ho používať a niekedy ich môže aj skomplikovať) .. Nabudúce si v lekcii Céčko a Linux - Code :: Blocks druhýkrát skúsime nejaký praktický príklad a pozrieme sa aj na debuggovania v Code :: Blocks