## Kostry úloh

Pracujete-li na studentském serveru ‹aisa›, můžete pro překlad
jednotlivých příkladů použít přiložený soubor ‹makefile›, a to
zadáním příkazu

    $ make příklad

kde ‹příklad› je název souboru bez přípony (např. tedy ‹make
e1_factorial›). Tento příkaz postupně:

 1. přeloží Vaše řešení překladačem ‹g++›,
 2. provede kontrolu nástrojem ‹clang-tidy›,
 3. spustí přiložené testy,
 4. spustí kontrolu nástrojem ‹valgrind›.

Selže-li některý krok, další už se provádět nebudou. Povede-li se
překlad v prvním kroku, v pracovním adresáři naleznete spustitelný
soubor s názvem ‹příklad›, se kterým můžete dále pracovat (např. ho
ladit/krokovat nástrojem ‹gdb›).

Existující přeložené soubory můžete smazat příkazem ‹make clean›
(vynutíte tak jejich opětovný překlad a spuštění všech kontrol).

### Textový editor

Na stroji ‹aisa› je k dispozici jednoduchý editor ‹micro›, který má
podobné ovládání jako klasické textové editory, které pracují
v grafickém režimu, a který má slušnou podporu pro práci se
zdrojovým kódem. Doporučujeme zejména méně pokročilým. Další
možností jsou samozřejmě pokročilé editory ‹vim› a ‹emacs›.

Mimo lokálně dostupné editory si můžete ve svém oblíbeném editoru,
který máte nainstalovaný u sebe, nastavit režim vzdálené editace
(použitím protokolu ‹ssh›). Minimálně ve VS Code je takový režim
k dispozici a je uspokojivě funkční.

### Vlastní prostředí

Každý příklad je zcela obsažen v jednom standardním zdrojovém
souboru, proto je jejich překlad velmi jednoduchý. Pravděpodobně
každé IDE zvládne s příklady bez problémů pracovat (spouštět, ladit,
atp.) – dejte si pouze pozor na to, že potřebujete překladač
s podporou standardu C++20 (nejstarší verze, které lze rozumně
použít, jsou ‹gcc› verze 10 a ‹clang› verze 13). Úroveň podpory
standardu C++20 v našeptávačích, zabudovaných kontrolách atp. je
různá. YMMV.

Pracujete-li na POSIX-ovém systému (včetně WSL), můžete také použít
dodaný soubor ‹makefile›, pouze si v nadřazené složce (tzn. «vedle»
složek ‹01›, ‹02›, atd.) vytvořte soubor ‹local.mk›, ve kterém
nastavíte, jak se na Vašem systému spouští potřebné příkazy. Na
typickém systému bude fungovat:

    CXX = g++
    TIDY = clang-tidy
    VALGRIND = valgrind

V opačném případě si budete muset potřebné kontroly spouštět ručně.
