Étendre le makefile pour générer une bibliothèque et une documentation avec doxygen

J’ai implémenté un programme d’arborescence binary qui inclut le fichier tree.c avec les fonctions, le tree.h avec leurs déclarations et un main.c pour les tests. De plus, j’ai un fichier make qui est:

CC=gcc CFLAGS=-g -Wall DEPS = tree.h OBJ = main.o tree.o %.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) tree: $(OBJ) $(CC) -o $@ $^ $(CFLAGS) clean: rm -f *.o tree 

Maintenant, je veux lui faire générer une bibliothèque et pas seulement un fichier object pour les fonctions des arbres binarys, puis générer la documentation de doxygen dans le fichier makefile. Toute aide serait utile.

    Je sais que ma réponse arrive un peu tard, mais j’espère que quelqu’un en tirera profit.

    J’ai un fichier makefile qui génère un document Doxygen. Vous devez tordre légèrement Doxygen. Créez le fichier d’installation Doxygen qui correspond à votre besoin, puis ouvrez-le dans un éditeur et supprimez les lignes contenant les deux parameters suivants (ils seront ajoutés par le fichier make ultérieurement)

     INPUT FILE_PATTERNS 

    append cette ligne

     @INCLUDE = doxyfile.inc 

    Enregistrer ce fichier sous un autre nom J’utilise Doxyfile.mk

    dans votre makefile Vous avez besoin d’une liste de sources et des répertoires où elles se trouvent, par exemple

     SRCS = $(OBJS:.o=.c) SRCDIRS = ./src SRCDIRS += ./other_src 

    Maintenant, vous pouvez mettre cette règle dans le Makefile, il créera le fichier doxyfile.inc contenant les parameters que vous avez supprimés de Doxyfile.mk.

     .PHONY: all clean distclean doxy # If makefile changes, maybe the list of sources has changed, so update doxygens list doxyfile.inc: Makefile.mk echo INPUT = $(SRCDIRS) > doxyfile.inc echo FILE_PATTERNS = *.h $(SRCS) >> doxyfile.inc doxy: doxyfile.inc $(SRCS) doxygen.exe doxyfile.mk 

    Bonus: si exécuté depuis un IDE comme Eclipse, les erreurs que Doxygen crache deviennent cliquables et passent au mauvais commentaire.

    Eh bien, je ne connais pas vraiment la syntaxe de la commande doxygen, je vais donc vous donner une réponse générique:

    dans votre Makefile, chacun

     term: [dep] action 

    est une cible.

    Donc, si vous ajoutez quelque chose comme:

     doc: $(OBJ) doxygen with-correct-options 

    Vous pourrez générer la documentation en utilisant:

     make doc 

    ( doc étant ici le nom de la cible)

    Maintenant, si vous ajoutez:

     all: tree doc @echo "Generating program and doc." 

    vous aurez le programme et la documentation générés en invoquant simplement

     make 

    En fin de compte, il existe une déclaration supplémentaire que votre Makefile pourrait utiliser: .PHONY . C’est “Un moyen de marquer l’une des nombreuses cibles comme ne produisant pas directement de fichiers et d’en assurer l’exécution même si un fichier portant le même nom que la cible existe” . En d’autres termes, il s’agit de s’assurer que doc , clean ou all sera toujours exécuté même si des fichiers nommés doc , clean ou existent all .

    Sa syntaxe est la suivante:

     .PHONY: all clean doc 

    Et est généralement mis à la fin du Makefile.