navody:make
Obsah
make
Make je utilita pro automatické překlady programů.
http://www.fit.vutbr.cz/~martinek/clang/make.html - Návod Ing. Davida Martínka
Sntaxe
$@
- plné jméno cíle$<
- jméno první závislostí$?
- jméno všech závislostí novějších než cíl$^
- jméno všech závislostí oddělené mezerami
$$
- znak $
Pomocí programu find
rekurzivně nalezne všechny soubory *.java
v adresáři src
JAVA_FILES = $(shell find src/ -type f -name '*.java')
Vytvoří nový seznam souborů z JAVA_FILES, který bude umístěný jinde a bude mít příponu class
CLASS_FILES = $(JAVA_FILES:src/%.java=out/%.class)
Příklady Makefile
pro všechny soubory *.ui
v adresáři forms
spustí příkaz pyuic4 <soubor ui> -o <pythonovský soubor ui_*.py>
PYUIC = pyuic4 FORMS_DIR = forms UI_FILES = $(wildcard $(FORMS_DIR)/*.ui) COMPILED_UI = $(UI_FILES:$(FORMS_DIR)/%.ui=$(FORMS_DIR)/ui_%.py) all: compile compile: $(COMPILED_UI) $(FORMS_DIR)/ui_%.py : $(FORMS_DIR)/%.ui $(PYUIC) $< -o $@
makefile pro překlad cpp souborů
EXEC = program CC = g++ CFLAGS_COMMON = -std=c++0x -pedantic -Wall -Wextra $(ef) CFLAGS_DEBUG = -g3 -D DEBUG $(CFLAGS_COMMON) CFLAGS_RUN = -s -O3 -D NDEBUG $(CFLAGS_COMMON) LIBS = -lm FILES = $(wildcard *.cpp) OBJECTS = $(FILES:.cpp=.o) RM = rm -f # oznaceni navesti - tzv. falesnych cilu, ktere nemaji vyznam "cilovy soubor" .PHONY: dependencies clean-exec clean-objects clean pack all: run dependencies: $(CC) -MM *.cpp > dependencies.list -include dependencies.list %.o: %.cpp $(CC) $(CFLAGS) -c $< -o $@ debug: CFLAGS = $(CFLAGS_DEBUG) debug: compile run: CFLAGS = $(CFLAGS_RUN) run: compile compile: dependencies compile: $(OBJECTS) $(CC) $(CFLAGS) $(LIBS) $(OBJECTS) -o $(EXEC) clean-exec: $(RM) $(EXEC_SERVER) $(EXEC_CLIENT) clean-objects: $(RM) *.o clean-dep: $(RM) dependencies.list clean: clean-exec clean-objects clean-dep pack: tar -czf <package>.tar.gz Makefile README *.cpp *.h
makefile, který převede všechny dia soubory do pdf (vyžaduje programy Dia a Inkscape)
.PHONY: all clean-svg clean-pdf clean RM= rm -f DIA_FILES= $(wildcard *.dia) DIA_SVG_FILES= $(DIA_FILES:.dia=.svg) DIA_PDF_FILES= $(DIA_SVG_FILES:.svg=.pdf) all: export-pdf-from-dia %.svg: %.dia dia --nosplash --export="$@" "$<" %.pdf: %.svg inkscape --export-pdf="$@" "$<" export-pdf-from-dia: $(DIA_PDF_FILES) svg: $(DIA_SVG_FILES) pdf: $(DIA_PDF_FILES) clean-svg: $(RM) *.svg clean-pdf: $(RM) *.pdf clean: clean-svg clean-pdf
makefile pro zabalení všech souborů spravovaných gitem a adresáře .git
do zip souboru s dnešním datem
PROGRAM_NAME = program .PHONY: pack clean pack: git ls-files | xargs zip -r $(PROGRAM_NAME)_$$(date "+%F").zip .git/ clean: $(RM) *.zip
navody/make.txt · Poslední úprava: 2013/10/06 00:26 autor: jules