Update
[linuxnijmegen-make.git] / geavanceerd.tex
1 \begin{frame}[fragile]
2 \frametitle{\texttt{vpath}\ldots}
3 \framesubtitle{\ldots want niemand zet alles in \'e\'en map}
4 \begin{block}{Waar zoekt \Make{} je bestanden}
5 \begin{itemize}
6 \item Huidige directory, \texttt{\$VPATH}, \texttt{vpath} directive
7 \pause\item Aanbevolen is om te werken met \texttt{vpath} directive
8 \end{itemize}
9 \pause%
10 \begin{lstlisting}
11 vpath %.c src
12 vpath %.h src
13 \end{lstlisting}
14 \end{block}
15
16 \pause%
17 \begin{block}{Projectstructuur}
18 \dirtree{%
19 .1 Makefile.
20 .1 src/.
21 .2 frob.c.
22 .2 nicator.c.
23 .2 main.c.
24 .1 include/.
25 .2 frob.h.
26 .2 nicator.h.
27 }
28 \end{block}
29 \end{frame}
30
31 \begin{frame}[fragile]
32 \frametitle{Speciale targets}
33 \begin{itemize}
34 \item\texttt{.PHONY} {-} Cree\"ert geen files
35 \item\texttt{.SECONDARY} {-} Tussenbestanden die niet verwijderd worden.
36 (object files, fmt files).
37 \item\texttt{.INTERMEDIATE} {-} Tussenbestanden die verwijderd mogen
38 worden.
39 \end{itemize}
40
41 \begin{lstlisting}[caption={Speciale target syntax}]
42 .PHONY all
43 .SECONDARY b
44
45 all: b
46
47 b: a
48 mv $< $@
49
50 a: a.c
51 gcc $< -o $@
52 \end{lstlisting}
53 \end{frame}