Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator Makefile

Zamień listę zadań w formacie nazwa: polecenie w gotowy plik Makefile z tabulatorami i celem help.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Wpisz zadania i kliknij „Generuj Makefile”.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator Makefile — cele, polecenia i samodokumentujący się help

Generator Makefile zamienia listę zadań w formacie nazwa: polecenie w gotowy plik Makefile: z prawdziwymi tabulatorami w przepisach, deklaracją .PHONY dla wszystkich celów i celem help, który sam wypisuje dostępne komendy. Wpisz nazwę projektu, wklej zadania i skopiuj wynik do katalogu głównego repozytorium.

Co dokładnie generuje to narzędzie

Każdą linię formularza narzędzie dzieli na pierwszym dwukropku: lewa strona to nazwa celu, prawa to polecenie powłoki. Nazwa może zawierać wyłącznie litery, cyfry, podkreślenia i myślniki, więc nie powstanie cel, którego Make nie potrafi wywołać. Puste polecenie zamienia się w echo "nazwa" — plik dalej działa, a widać, że cel czeka na treść. Powtórzone nazwy są scalane do jednego wpisu, bo drugi przepis dla tego samego celu wywołuje ostrzeżenie overriding recipe for target.

Nagłówek pliku to komentarz z nazwą projektu. Dalej .DEFAULT_GOAL := help, czyli samo make pokazuje pomoc, zamiast budować pierwszy napotkany cel. Potem jedna linia .PHONY ze wszystkimi celami, a na końcu cele w kolejności, w jakiej je wpisałeś — każdy z komentarzem ##, z którego cel help składa listę poleceń.

Anatomia pliku Makefile

ElementZapisRola
Cel (target)build:Nazwa zadania wywoływana przez make build
Przepis (recipe) npm run buildPolecenie celu — od tabulatora, każda linia w osobnej powłoce
Wymaganiabuild: installCele wykonywane przed danym celem
.PHONY.PHONY: build testCele niebędące plikami — Make pomija sprawdzanie daty modyfikacji
.DEFAULT_GOAL.DEFAULT_GOAL := helpCel uruchamiany przez samo make
Komentarz opisowybuild: ## buduje paczkęTekst po ## zbiera cel help

Tabulator zamiast spacji — klasyczna pułapka Make

Każda linia przepisu musi zaczynać się tabulatorem. Cztery spacje kończą się błędem Makefile:7: *** missing separator. Stop. Generator wstawia prawdziwe tabulatory, ale edytor z opcją zamiany tabulatorów na spacje potrafi to zepsuć po wklejeniu.

Wyłącz w edytorze konwersję tabulatorów dla plików o nazwie Makefile. Podejrzany plik sprawdzisz komendą cat -A Makefile — poprawna linia przepisu zaczyna się od ^I. Zmienna .RECIPEPREFIX pozwala co prawda zmienić znak wcięcia, ale psuje przenośność, więc lepiej zostać przy tabulatorze.

Znak dolara i zmienne w przepisach

Make rozwija $ zanim linia trafi do powłoki, dlatego zmienne shellowe i pola awk pisze się podwójnie: $$PATH, $$1, $$(date). Pojedyncze $(FOO) to zmienna Make, a $(shell date) wykonuje się na etapie czytania pliku, nie w trakcie działania celu. Cel help z tego generatora używa obu form naraz: $(MAKEFILE_LIST) zostaje po stronie Make, a $$1 i $$2 trafiają do awk jako numery kolumn.

Jak korzystać z generatora

  1. Wpisz nazwę projektu — trafi do komentarza w pierwszej linii pliku.
  2. Wypisz zadania, po jednym w linii, w formacie nazwa: polecenie, na przykład test: vendor/bin/phpunit.
  3. Kliknij Generuj Makefile i skopiuj wynik przyciskiem obok podglądu.
  4. Zapisz zawartość jako Makefile (wielka litera M) w katalogu głównym projektu.
  5. Uruchom make albo make help, aby zobaczyć listę celów, a potem wybrany cel: make test.

Makefile spina się z resztą warsztatu: krótkie make deploy wywołasz z pipeline'u przygotowanego w generatorze konfiguracji GitLab CI albo w generatorze pliku Jenkinsfile, a zadanie cykliczne ustawisz przez generator crontab. Przed pierwszym commitem przyda się generator pliku .gitignore, a przy wdrożeniu na serwer Apache generator pliku .htaccess.

Czego to narzędzie nie robi

Jeden cel dostaje dokładnie jedno polecenie. Wieloliniowe przepisy, wymagania między celami, zmienne, warunki ifeq i reguły wzorcowe w stylu %.o: %.c dopisujesz ręcznie w wygenerowanym szkielecie. Generator nie sprawdza też, czy polecenie istnieje w systemie — weryfikuje format linii i nazwę celu.

Najczęściej zadawane pytania

Dlaczego Makefile wymaga tabulatorów?

To decyzja z 1976 roku, którą autor Make nazwał później swoim błędem, ale zgodność wstecz wygrała. Dziś tabulator jest jedynym przenośnym znakiem wcięcia przepisu. Spacje dają błąd missing separator wskazujący numer linii — od niej zacznij szukać.

Czym Makefile różni się od skryptu bash albo npm scripts?

Make zna zależności między celami i plikami: jeśli cel odpowiada plikowi nowszemu niż jego wymagania, pomija pracę. Skrypt bash wykonuje wszystko za każdym razem, a npm scripts działa tylko w projektach z package.json. Makefile jest niezależny od języka, więc jedno make test obsłuży repozytorium z PHP, Pythonem i frontendem naraz.

Do czego właściwie służy .PHONY?

Deklaruje cele, które nie tworzą pliku o swojej nazwie. Bez tego wystarczy katalog build albo plik test w repozytorium, żeby Make uznał cel za wykonany i wypisał make: 'test' is up to date. Generator dopisuje .PHONY dla każdego celu, bo wszystkie są zadaniami, nie plikami wynikowymi.

Jak przekazać argument do celu?

Najprościej zmienną: make deploy ENV=staging, a w przepisie $(ENV). Wartość domyślną ustawisz przez ENV ?= production nad celami. Zmienne z linii poleceń mają pierwszeństwo nad tymi z pliku, więc nie musisz nic komentować przy jednorazowym uruchomieniu.

Czy Makefile działa na Windows?

Tak, po zainstalowaniu make — najczęściej przez Git Bash, MSYS2, Chocolatey albo WSL. Sama składnia jest przenośna, ale polecenia w przepisach już nie: rm -rf czy ukośniki w ścieżkach zachowają się inaczej pod cmd.exe. Jeśli projekt ma działać na obu systemach, uruchamiaj Make w WSL lub trzymaj polecenia w skryptach wywoływanych z celu.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!