Makefile

Makefile

Efektivní programátoři se snaží ušetřit každou sekundu při vývoji. Například místo toho, aby vypisovali v terminálu celý dotaz tak si například píšou aliasy/zkratky. Tak že docker-compose up -> dcu, ls -al -> ll. Kdo neví, co jsou aliasy, zde je link, kdo má windows tomu bohužel neporadím, protože to není operační systém pro práci programátora. Když děláte v týmu a každý budete mít svoje alisy, je to možnost, ale efektivnější cesta je mít aliasy napříč projektem sjednocené a k tomu ještě v gitu.

Jak na to?

Vytvoříme v projektu soubor, který se bude jmenovat Makefile a vložíme do něj:

foo:
	echo: "Jak to jde mistře?"

V ukázce “foo:” se chová jako název funkce/zkrátka. Pod tím řádek s odsazením je příkaz. Může jich být více pod sebou.

Když do terminálu napíšeme make a odpálíme to, výpis bude:

echo "Jak se máš mistře"
Jak se máš mistře

První deklarace je zároveň výchozí. Tzn, pokud v souboru budete mít víc deklarací, vykoná se vždy první, proto se většinou pojmenovává jako “all”. Je to konvence hlavně pro vývojáře v C/C++ a říká, co všechno se musí zbuildit, aby to bylo gucci. Příklad:

all: foo gogo
foo:
	echo: "Jak to jde mistře?"
gogo:
	echo: "Jak jdou buildy?"

Když odpálíme make, dostaneme:

echo "Jak se máš mistře"
Jak se máš mistře
echo "Jak jdou buildy"
Jak jdou buildy

Abychom se nám nevypisoval příkaz a jeho exekuce, tak před echo použijeme @. A jak teda může vypadat náš první jednoduchý Makefile i s nápovědou?

all:
	@echo "make dcu           --- Start docker-compose up"
	@echo "make node-bash     --- Connect to node docker container"
dcu:
	docker-compose -up
node-bash:
	docker-compose exec node-super-cool /bin/sh

Když zavoláte pouze make, vypíše se vám nápověda, co váš soubor obsahuje. Po té spustíte co budete potřebovat. Máte to v projektu a v gitu napříč týmem. Nemusíte si ani všechny dotazy pamatovat. Když přijde někdo nový použije make a hned ví. Tady jsme si ukázali pouze 15% co vše make umí. Je to hodně silný nástroj, a kdyby jste se chtěli dozvědět víc:

https://makefiletutorial.com

https://opensource.com/article/18/8/what-how-makefile

Pokud budete mít dotaz kontaktuje mě na jurij@starynec.cz. Budu rád, když mi napíšete feedback 😊. Pro více info mě sledujte na instagramu.