This article is work in progress! Check back soon for a full writeup.
main:
rm -rf main$@ gcc file1.c file2.c -o
main: file1.c file2.c
$@ gcc file1.c file2.c -o
file1.o: file1.c
gcc -c file1.c
file2.o: file1.c
gcc -c file2.c
main: file1.o file2.o
$@ gcc file1.o file2.o -o
OBJS=file1.o file2.o
%.o: %.c
$^ -o $@
gcc -c ${info compiled $^!!}
main: $(OBJS)
$^ -o $@ gcc -fsanitize=address -fno-strict-aliasing -fno-stack-protector -fpie
CC=gcc
CFLAGS=-fsanitize=address -fno-strict-aliasing -fno-stack-protector -fpie
OBJS=file1.o file2.o
main: $(OBJS)
$(CC) $(CFLAGS) $^ -o $@
CC=gcc
CFLAGS=-fsanitize=address -fno-strict-aliasing -fno-stack-protector -fpie
OBJS=file1.o file2.o
depend: .depend
gcc -MM *.c > .depend
include .depend
main: $(OBJS) depend
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
%.pdf: %.tex
$^
pdflatex
clean:
rm -rf *.log *.aux
.PHONY clean
Basically anytime you want to run command(s) when some input files
are NEWER than some output files
.
${info <stuff>}
Useful for logging
${wildcard *.c}
Useful for finding files
${shell <shell cmd>}
Run arbitrary shell commands!
${foreach i, LIST, <cmd>}
: Do cmd for each i in LIST
Phony Targets: Targets that dont produce the file of their name!
touch *.c
(org-babel-result-hide-all)