\documentclass[hyperref={bookmarks=true}]{beamer}

\usepackage{beamerthemesplit}
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage{eurosym}
\usepackage{graphicx}
\useoutertheme{jhd}
\usecolortheme{jhd}

\title{Automatische Abhängigkeitsbestimmung}
\author{Jan Hendrik Dithmar}
\date{17.11.2005}

\begin{document}

\newcommand{\bild}[2]{
	\begin{figure}[htpb]
		\centering
			\includegraphics[width=#1cm]{#2}
	\end{figure}
	}

\newcommand{\Link}[2]{
	\textcolor{blue}{\href{#1}{#2}}
}

\frame{\titlepage}

%\section{Einführung}
%\begin{frame}[fragile]
%	\frametitle{Einführung}
%	
%	Bei großen Projekten wird es schwierig, alle Abhängigkeiten von Hand in das Makefile einzutragen. Die Lösung des Problems liegt in der Automatisierung dieser Vorgänge.
%\end{frame}

\section{make depend}
\begin{frame}[fragile]
	\frametitle{make depend}
	
	Der UNIX C-Compiler stellt ein automatisches Verfahren zur Bestimmung von Abhängigkeiten zur Verfügung: \\
	\texttt{\$} \textbf{cc -M add.cpp} \\
	\texttt{add.o: add.cpp} \\
	\texttt{add.o: ./calc.h} \\
	\texttt{\$ \_} \\
	Diese Eigenschaft kann in einem Makefile genutzt werden:
	\begin{verbatim}
	depend::
	    (for file in $(SOURCES); do \
	        $(CC) -M $$file; \
	    done) > Makedeps
	include Makedeps
	\end{verbatim}
	\texttt{include Makedeps} wird beim Einlesen des Makefiles durch den Inhalt von \texttt{Makedeps} ersetzt, womit die bestimmten Abhängigkeiten Bestandteil des Makefiles werden.
\end{frame}

\section{Autoconf \& Co.}
\begin{frame}[fragile]
	\frametitle{Autoconf \& Co.}
	
	\bild{7}{dev}
\end{frame}

%\section{Autoconf \& Co. (2)}
%\begin{frame}[fragile]
%	\frametitle{Autoconf \& Co. (2)}
%	
%	\bild{5}{simple}
%\end{frame}

\section{Beispiel: GNU Hello}
\begin{frame}[fragile]
	\frametitle{Beispiel: GNU Hello}
	
	\texttt{\$} \verb!./configure!
	{\small 
	\begin{verbatim}
	checking for a BSD-compatible install... /usr/bin/install -c
	checking whether build environment is sane... yes
	checking for gawk... gawk
	checking whether make sets ${MAKE}... yes
	checking for gcc... gcc
	checking for C compiler default output... a.out
	checking whether the C compiler works... yes
	...
	checking for perl... perl
	configure: creating ./config.status
	config.status: creating Makefile
	config.status: creating contrib/Makefile
	config.status: creating doc/Makefile
	...
	\end{verbatim}
	}
	\texttt{\$} \verb!make!
\end{frame}

\section{Beispiel: GNU Hello (2)}
\begin{frame}[fragile]
	\frametitle{Beispiel: GNU Hello (2)}
	
	\texttt{\$} \verb!./hello! \\
	{\small
	\texttt{Hello, world!} \\
	}
	\texttt{\$} \verb!./hello --help! \\
	{\small
	\begin{verbatim}
GNU hello, THE greeting printing program.

Usage: ./hello [OPTION]

  -h, --help          display this help and exit
  -v, --version       display version information and exit

  -t, --traditional       use traditional greeting format
  -n, --next-generation   use next-generation greeting format
  -m, --mail              print your mail

Report bugs to <bug-gnu-hello@gnu.org>.
	\end{verbatim}
	}
	\texttt{\$ \_}
\end{frame}

\section{Nachschlagen im Internet}
\frame
{
	\frametitle{Nachschlagen im Internet}
	
	\begin{itemize}
		\item \Link{http://www.gnu.org/software/make/make.html}{Make (http://www.gnu.org/software/make/make.html)}
		\item \Link{http://www.gnu.org/software/autoconf/}{Autoconf (http://www.gnu.org/software/autoconf/)}
		\item \Link{http://www.gnu.org/software/hello/hello.html}{GNU Hello (http://www.gnu.org/software/hello/hello.html)}
	\end{itemize}
}

\end{document}