Makefile nedir? Gündelik hayatta kullanımı.

Az önce bir video izlerken (https://www.youtube.com/watch?v=NLwA8FZBidk) Makefile kullanımı ile ilgili bir örnek gördüm ve uzun zamandır aradığım şey olduğunu fark ettim. Hem de çok uzun zamandır bildiğim make komutu ile yapıldığını görmek ayrı bir utanç kaynağı oldu.

Sorun nedir? Şimdi diyelim uygulama yazdınız. Sonrasında uygulamayı başlatmak ve durdurmak için komutlar yazdınız. Bunları start.sh veya stop.sh diye dosyalara koyabilirsiniz. Sonra başka bir ihtiyaç oluyor, örneğin restart.sh yazmak gerekiyor. Falan filan derken ortalık shell script çöplüğüne dönüyor. Bunun yerine bir Makefile hazırlayıp içine kullanmak istediğiniz komutları yazıp daha sonra bunları make komutu yardımı ile çağırabilirsiniz.

Bu işlem gcc veya C/C++ compile edenler tarafından son 300 yıldır kullanılıyor. Zamanından o kadar karmaşık bir şekilde yazılıyordu ki bu zamana kadar kullanmak aklıma gelmemişti. ( dökümantasyon )

all: build

build:
 docker build --tag="cast/ansible"

run:
 docker run -it cast/ansible

şeklinde yazacağınız bir Makefile ile build ve run komutlarını tanımlamış oluyorsunuz. Daha sonra komut satırından

$ make build
$ make run

şeklinde çağırmak mümkün olacak. Hadi güle güle kullanın.