diff --git a/TP-0/Makefile b/TP-0/Makefile index ccad907..a400ad1 100644 --- a/TP-0/Makefile +++ b/TP-0/Makefile @@ -1,3 +1,5 @@ +.PHONY: tuto.pdf + # Par défaut, on construit le fichier shell, la doc, et le fichier tuto.pdf all: shell doc tuto.pdf @@ -12,17 +14,14 @@ doc: src/shell.c doxygen Doxyfile # Pour construire tuto.pdf, on a besoin du fichier tuto.tex -tuto.pdf: tex-src/tuto.tex - # On crée un répertoire pour les fichiers temporaires - mkdir -p .build-latex - # On compile le fichier .tex en utilisant ce répertoire temporaire - pdflatex -output-directory .build-latex $^ - # On crée dans le répertoire courant un lien vers le fichier .pdf généré - ln -f .build-latex/$@ +tuto.pdf: + $(MAKE) -C tex-src/ tuto.pdf + ln -f tex-src/tuto.pdf # Pour nettoyer les fichiers temporaires clean: - rm -fr .build-latex + $(MAKE) -C tex-src/ cleanall + $(MAKE) -C src/ cleanall # Pour nettoyer tous les fichiers générés cleanall: clean diff --git a/TP-0/src/Makefile b/TP-0/src/Makefile new file mode 100644 index 0000000..60d7f0a --- /dev/null +++ b/TP-0/src/Makefile @@ -0,0 +1,10 @@ +all: shell + +# Pour construire le fichier shell, on a besoin du fichier shell.c +shell: src/shell.c + # La ligne de commande suivante compile le fichier shell.c en shell + gcc -Wall -pedantic --extra-warnings -std=c99 -o $@ $^ + +# Pour nettoyer tous les fichiers générés +cleanall: + rm -f shell diff --git a/TP-0/tex-src/Makefile b/TP-0/tex-src/Makefile new file mode 100644 index 0000000..0170ce6 --- /dev/null +++ b/TP-0/tex-src/Makefile @@ -0,0 +1,18 @@ +# Par défaut, on construit le fichier shell, la doc, et le fichier tuto.pdf +all: tuto.pdf + +# Pour construire tuto.pdf, on a besoin du fichier tuto.tex +tuto.pdf: tuto.tex + # On crée un répertoire pour les fichiers temporaires + mkdir -p .build-latex + # On compile le fichier .tex en utilisant ce répertoire temporaire + pdflatex -output-directory .build-latex $^ + # On crée dans le répertoire courant un lien vers le fichier .pdf généré + ln -f .build-latex/$@ + +# Pour nettoyer les fichiers temporaires +clean: + rm -fr .build-latex + +cleanall: clean + rm -f tuto.pdf diff --git a/TP-0/tex-src/src/.Makefile.swp b/TP-0/tex-src/src/.Makefile.swp new file mode 100644 index 0000000..85981c9 Binary files /dev/null and b/TP-0/tex-src/src/.Makefile.swp differ diff --git a/TP-0/tex-src/src/Makefile-basique b/TP-0/tex-src/src/Makefile-basique new file mode 100644 index 0000000..60d7f0a --- /dev/null +++ b/TP-0/tex-src/src/Makefile-basique @@ -0,0 +1,10 @@ +all: shell + +# Pour construire le fichier shell, on a besoin du fichier shell.c +shell: src/shell.c + # La ligne de commande suivante compile le fichier shell.c en shell + gcc -Wall -pedantic --extra-warnings -std=c99 -o $@ $^ + +# Pour nettoyer tous les fichiers générés +cleanall: + rm -f shell diff --git a/TP-0/tex-src/src/shell-doc.c b/TP-0/tex-src/src/shell-doc.c new file mode 100644 index 0000000..7a5eff1 --- /dev/null +++ b/TP-0/tex-src/src/shell-doc.c @@ -0,0 +1,45 @@ +/** + * @file + * @author Votre Nom + * @version 1.0 + * + * @section LICENSE + * + * Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le + * modifier suivant les termes de la GNU General Public License telle que + * publiée par la Free Software Foundation ; soit la version 3 de la licence, + * soit (à votre gré) toute version ultérieure. + * + * Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE + * GARANTIE ; pas même la garantie implicite de COMMERCIABILISABILITÉ ni + * d'ADÉQUATION à UN OBJECTIF PARTICULIER. Consultez la GNU General Public + * License pour plus de détails. + * + * Vous devriez avoir reçu une copie de la GNU General Public License en même + * temps que ce programme ; si ce n'est pas le cas, consultez + * . + * + * @section DESCRIPTION + * + * Ce fichier contient un programme affichant "Bonjour DF !" à l'écran. + */ + +/** + * main fonction d'entrée du programme. + * + * main affiche simplement du texte puis termine en renvoyant le code d'erreur + * indiquant le bon déroulement de l'exécution. + * + * @param argc nombre d'arguments dans la ligne de commande appelante + * @param argv tableau des arguments de la ligne de commande + * @return code de terminaison du programme + **/ + +#include + +int main(int argc, char* argv[]) +{ + printf("Bonjour DF !\n"); + + return 0; +} diff --git a/TP-0/tex-src/src/shell-fgets.c b/TP-0/tex-src/src/shell-fgets.c new file mode 100644 index 0000000..8202095 --- /dev/null +++ b/TP-0/tex-src/src/shell-fgets.c @@ -0,0 +1,16 @@ +#include + +#define TAILLE_BUF 256 + +int main(int argc, char* argv[]) +{ + printf("Bonjour DF !\n"); + printf("Entrez du texte !\n"); + + char buffer[TAILLE_BUF]; + fgets((char*)&buffer,TAILLE_BUF, stdin); + + printf("Vous avez entré : %s\n", buffer); + + return 0; +} diff --git a/TP-0/tex-src/src/shell-hello_world.c b/TP-0/tex-src/src/shell-hello_world.c new file mode 100644 index 0000000..c54567f --- /dev/null +++ b/TP-0/tex-src/src/shell-hello_world.c @@ -0,0 +1,8 @@ +#include + +int main(int argc, char* argv[]) +{ + printf("Bonjour DF !\n"); + + return 0; +} diff --git a/TP-0/tex-src/tuto.tex b/TP-0/tex-src/tuto.tex index 7c9a840..4612d58 100644 --- a/TP-0/tex-src/tuto.tex +++ b/TP-0/tex-src/tuto.tex @@ -87,14 +87,7 @@ source {\tt shell.c} dans le répertoire {\tt src/} précédemment créé. Voici un code simple affichant simplement du texte sur la sortie standard et terminant. -\begin{lstlisting}[language=c,caption=src/shell.c] -int main(int argc, char* argv[]) -{ - printf("Bonjour DF !\n"); - - return EXIT_SUCCESS; -} -\end{lstlisting} +\lstinputlisting[language=c,caption=src/shell-hello\_world.c]{src/shell-hello_world.c} % }}} \subsubsection{Première compilation} @@ -108,50 +101,7 @@ Bonjour DF ! \subsubsection{Documentation} % {{{ -\begin{lstlisting}[language=C,caption=shell.c] -/** - * @file - * @author Votre Nom - * @version 1.0 - * - * @section LICENSE - * - * Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le - * modifier suivant les termes de la GNU General Public License telle que - * publiée par la Free Software Foundation ; soit la version 3 de la licence, - * soit (à votre gré) toute version ultérieure. - * - * Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE - * GARANTIE ; pas même la garantie implicite de COMMERCIABILISABILITÉ ni - * d'ADÉQUATION à UN OBJECTIF PARTICULIER. Consultez la GNU General Public - * License pour plus de détails. - * - * Vous devriez avoir reçu une copie de la GNU General Public License en même - * temps que ce programme ; si ce n'est pas le cas, consultez - * . - * - * @section DESCRIPTION - * - * Ce fichier contient un programme affichant "Bonjour DF !" à l'écran. - */ - -/** - * main fonction d'entrée du programme. - * - * main affiche simplement du texte puis termine en renvoyant le code d'erreur - * indiquant le bon déroulement de l'exécution. - * - * @param argc nombre d'arguments dans la ligne de commande appelante - * @param argv tableau des arguments de la ligne de commande - * @return code de terminaison du programme - **/ -int main(int argc, char* argv[]) -{ - printf("Bonjour DF !\n"); - - return EXIT_SUCCESS; -} -\end{lstlisting} +\lstinputlisting[language=c,caption=src/shell-doc.c]{src/shell-doc.c} \begin{lstlisting}[language=bash,caption=Dans votre shell] $ doxygen Doxyfile @@ -165,28 +115,17 @@ $ doxygen Doxyfile \subsection{Le Makefile} % {{{ -\lstinputlisting[language=make,caption=Makefile]{Makefile} +\lstinputlisting[language=make,caption=Makefile]{src/Makefile-basque} % }}} % }}} - \section{Lire et écrire sur l'entrée standard} +% {{{ -\begin{lstlisting}[language=c,caption=shell.c] -int main(int argc, char* argv[]) -{ - printf("Bonjour DF !\n"); - printf("Entrez du texte !\n"); - - char buffer[256]; - gets(&buffer); - printf("Vous avez entré : %s\n"); - - return EXIT_SUCCESS; -} -\end{lstlisting} +\lstinputlisting[language=c]{src/shell-fgets.c} +% }}} % }}} \end{document}