Add quickstart section, in Makefile, fallback to cc if clang not found

This commit is contained in:
flyingscorpio@clevo 2022-11-06 17:41:32 +01:00
parent dbc5f51449
commit b5e1168307
3 changed files with 33 additions and 3 deletions

View file

@ -1,13 +1,24 @@
all: client server rapport cdb
client: src/client.c src/client.h src/common.c src/common.h
clang -MJ client.o.json -o client src/client.c src/common.c -pthread
@if command -v clang >/dev/null 2>&1; then \
clang -MJ client.o.json -o client src/client.c src/common.c -pthread; \
else \
cc -o client src/client.c src/common.c -pthread; \
fi
server: src/server.c src/server.h src/common.c src/common.h
clang -MJ server.o.json -o server src/server.c src/common.c -lpthread
@if command -v clang >/dev/null 2>&1; then \
clang -MJ server.o.json -o server src/server.c src/common.c -lpthread; \
else \
cc -o server src/server.c src/common.c -lpthread; \
fi
cdb: client server
@sed -e '1s/^/[\'$$'\n''/' -e '$$s/,$$/\'$$'\n'']/' *.o.json > compile_commands.json
@if command -v clang >/dev/null 2>&1; then \
sed -e '1s/^/[\'$$'\n''/' -e '$$s/,$$/\'$$'\n'']/' *.o.json > compile_commands.json; \
fi
rapport: rapport.tex rapport.sty
@latexmk -pdf rapport.tex

Binary file not shown.

View file

@ -53,6 +53,25 @@
\end{enumerate}
\section{Quickstart}
La compilation du programme se fait grâce au \texttt{Makefile} fourni.
Il n'a été testé qu'en environnement GNU/Linux.
Il est recommandé d'utiliser un compilateur compatible \texttt{C99} à cause de la syntaxe des macros de debug et de log.
En plus de compiler le programme, le \texttt{Makefile} compile le présent rapport avec \texttt{latexmk}.
Ne pas hésiter à lancer les recettes séparément si \LaTeX{} n'est pas installé.
Une configuration du programme est possible avant compilation dans le fichier header \texttt{src/config.h}.
Les explications sont sous forme de commentaires.
Si l'on veut supprimer les logs de la sortie standard et les rediriger vers un fichier pour n'avoir que le déroulement du programme~:
\begin{console}[gobble=8]
$ ./server 2> server.log
$ ./client 2> client.log
\end{console}
\section{Architecture fonctionnelle}
Le projet est composé de deux exécutables~: