User Tools

Site Tools


make

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
make [2021/03/22 11:03] – [Overview] utedassmake [2022/09/12 00:30] (current) – external edit 127.0.0.1
Line 11: Line 11:
 $ make --print-data-base $ make --print-data-base
 </code> </code>
 +
 +====== Magic symbols ======
 +[[https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html#Automatic-Variables|Automatic variables]]
 +
 +| $@ | Target |
 +| $%%^%% | All prerequisites (excluding duplicates) |
 +| $+ | All prerequisites (including duplicates) |
 +| $? | All prerequisites newer than target |
 +| $< | First prerequisite |
 +| $(@D) | Directory part of target with trailing slash |
 +| $(@F) | File part of target without directory path |
 +| $* | The stem of the target match in implicit rules |
 +
 ====== Examples ====== ====== Examples ======
  
Line 58: Line 71:
 SOURCES = a.c b.c c.c SOURCES = a.c b.c c.c
 OBJECTS = $(SOURCES:c=o) OBJECTS = $(SOURCES:c=o)
 +</code>
 +
 +<code make>
 +# A make file that compiles all c files and places object files
 +# in the same tree-structure that the sources were found
 +CC = gcc
 +CFLAGS = -std=c99 -Wall -Wextra -pedantic -O0 -I. -I utils -I protocol -I command -I driver
 +OUTFILE = main.exe
 +
 +OBJDIR  := build/objects
 +SOURCES := $(shell find * -type f -name "*.c")
 +OBJECTS := $(addprefix $(OBJDIR)/,$(SOURCES:.c=.o))
 +
 +run: $(OUTFILE)
 + @echo "";
 + @./$(OUTFILE)
 +
 +$(OUTFILE): $(OBJECTS)
 + $(CC) -o $@ $^ $(CFLAGS)
 +
 +$(OBJECTS): $(OBJDIR)/%.o: %.c
 + mkdir -p $(@D)
 + $(CC) -c -o $@ $^ $(CFLAGS)
 +
 +.PHONY: clean
 +clean:
 + @rm -f $(OUTFILE) *.mk *.o *.pp *.s listing.txt
 + @rm -rf $(OBJDIR)
 </code> </code>
make.1616411036.txt.gz · Last modified: 2022/09/12 00:30 (external edit)

Except where otherwise noted, content on this wiki is licensed under the following license: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki