Exemple de makefile _GENE_DOC.MAK pour Windows

Exemple de makefile _GENE_DOC.MAK pour Windows

Messagepar Polo » 05 Avril 2010, 18:35

On conçoit habituellement un makefile qui compile les différents modules et génère la documentation, cependant on peut simplement générer la documentation comme ci-dessous si on compile avec MSVC.
La double barre inverse \\ n'est pas une erreur.
doc.mak est le plus souvent associé à un shell DOS application.bat ou doc.bat

:arrow: Ci dessous on commence par recréer le fichier .pj contenant la liste des fichiers à examiner dans l'ordre alphabétique; *.asm *.C et *.cpp
:arrow: On recrée le fichier d'entête application.h
:arrow: En dernier on produit les documents (ceux qui ne sont pas commentés par #)
On retrouve le même genre de fichier sous linux, mais avec la syntaxe shell appropriée.
Code: Tout sélectionner
# Release 31/01/2010 WINDOWS 7
# _GENE_DOC.MAK, makefile standard pour générer la documentation
# ce makefile doit se trouver dans le répertoire des sources
# make.exe doit se trouver dans ..\bin\make.exe
# mkd.exe Release 3.12 pour Win16 (Win 95 à Win xp) et R 10.03 pour Win32 x86 (Win xp à Win 7)

#Définition des macros:
PRJ = nom de l'application
DEPENDANCES =

# nom du projet, ou entrer la commande:
#..\bin\make.exe -f_GENE_DOC.MAK PRJ=.... [nom du projet.<extension>]

# $(PRJ).h peut être supprimé en all: afin d'éviter d'écraser le fichier d'entête \
# C++ généré par afx pour les projets MicroSoft (mfc)

# Si des fichiers c ou cpp ont été modifiés ou ajoutés refaire le fichier \
# projet .pj et le fichier d'entête .h ou .hpp, et la documentation.
all: $(DEPENDANCES)
   -call ..\\bin\\make.exe -f_GENE_DOC.MAK $(PRJ).pj
   -call ..\\bin\\make.exe -f_GENE_DOC.MAK $(PRJ).h
   -call ..\\bin\\make.exe -f_GENE_DOC.MAK $(PRJ).doc
   @echo ------------------------------------------------
   @echo Mise a jour terminee.
   @echo Verifier les mises a jour.

# Mise à jour de la documentation
$(PRJ).doc : $(DEPENDANCES)
   @echo mise a jour de ..\doc\_document_programmeurs.txt
   -call ..\\bin\\mkd -Cjt D $(PRJ).pj ..\\doc\\_document_programmeurs.txt
   @echo mise a jour de ..\doc\_manuel_PC.txt
   -call ..\\bin\\mkd -Ft M ..\\include\\version.h ..\\doc\\old_manuel_PC.txt
#   -call ..\\bin\\mkd -Cjt M $(PRJ).pj ..\\doc\\_manuel_PC.txt
## vieille version:
##   -call ..\\bin\\mkd -Ft M ..\\include\\version.h ..\\doc\\_manuel_PC.txt
#   @echo mise a jour de ..\doc\_manuel_UNIX.txt
#   -call ..\\bin\\mkd -Cjt  $(PRJ).pj ..\\doc\\$(PRJ).1
#   @echo mise a jour de ..\doc\_structure_de_programme.txt
#   -call ..\\bin\\mkd -Cjvn ** $(PRJ).pj ..\\doc\\_structure_de_programme.txt
#   @echo mise a jour de ..\doc\_conception_detaillee.txt
#   -call ..\\bin\\mkd -Cjtvn O $(PRJ).pj ..\\doc\\_conception_detaillee.txt
#   @echo mise a jour de ..\doc\_strings.txt
#   -call ..\\bin\\mkd -jnpv ** $(PRJ).pj ..\\doc\\_strings.txt
   
# création ou mise à jour du fichier d'entête .h de l'application.
$(PRJ).h : $(DEPENDANCES)
   @echo mise a jour de ..\include\(PRJ).h
   ..\\bin\\mkd -Ctj H $(PRJ).pj $(PRJ).h
   copy ..\\include\\$(PRJ).h ..\\include\\$(PRJ).h.old
   copy $(PRJ).h ..\include\$(PRJ).h

# création ou mise à jour du fichier d'entête .hpp de l'application.
# attention: penser à modifier les dépendances.
#$(PRJ).hpp : $(PRJ).pj
#   ..\\bin\\mkd -Ctj H $(PRJ).pj $(PRJ).hpp
#   copy ..\\include\\$(PRJ).hpp ..\\include\\$(PRJ).hpp.old
#   copy $(PRJ).hpp ..\include\$(PRJ).hpp


# On recrée le fichier $(PRJ).pj en cas de mise à jour d'un des fichiers cpp
# Les lignes du fichier .pj sera composé des noms de fichiers dans l'ordre alphabétique
$(PRJ).pj : $(DEPENDANCES)
   @echo mise a jour de $(PRJ).pj
   copy $(PRJ).pj $(PRJ).pj.old
# fichiers.asm dans l'ordre :
   dir /B /O:N /A:-D *.asm > $(PRJ).hd1
# fichiers.c dans l'ordre   
   dir /B /O:N /A:-D *.c >> $(PRJ).hd1
   dir /B /O:N /A:-D *.cpp >> $(PRJ).hd1
# RE-tri du mélange
   sort < $(PRJ).hd1 > $(PRJ).pj
   del $(PRJ).hd1
Image
Avatar de l’utilisateur
Polo
 
Messages: 18
Inscrit le: 19 Février 2010, 18:05

Retour vers Discussions sur les outils de la compilation

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron