2010-07-09 4 views
0

J'ai un projet qui peut être construit via makefile, et je voudrais ajouter la possibilité pour quelqu'un dans le répertoire de base non seulement de pouvoir construire l'exécutable via make, mais aussi de construire les pdfs de documentation à partir LATEX dans un répertoire distinct en tapant make docs ou quelque chose de similaire.
je besoin d'un seul laissez-passer pour générer la documentation, et il n'y a pas de dépendances dans les fichiers .tex.
Je n'ai aucune expérience avec makefiles récursives, donc toutes les ressources générales seraient également appréciées.makefile option pour générer la documentation latex

PS. Je n'utilise pas noweb ou des systèmes similaires, j'ai simplement des fichiers sources et des fichiers .tex séparés.

comportement désiré:
$ ls
docs/
Makefile
source1.cpp
source1.h
source2.cpp
source2.h
$ ls docs
Makefile
doc1.tex
$ make
= mon programme sera compilé =
$ make docs
$ ls docs
Makefile
doc1.tex
doc1.pdf

+0

Il suffit d'utiliser 'cd docs && startDocGenerator.sh' comme action. Le chdir sera annulé après la fin de la règle. –

+0

@Kilian: voir mon commentaire sur la réponse de dcolish. http://stackoverflow.com/questions/3213342/makefile-option-to-generate-latex-documentation/3213489#3213489 –

Répondre

2

Je pense que vous pouvez facilement spécifier juste une commande pour exécuter le Makefile dans le répertoire docs dir et Exécutez pdflatex -output-directory = DIR. Donc, il finirait regarder quelque chose comme ceci:

Dans votre Makefile toplevel ajouter la règle

docs: 
     $(MAKE) -C doc all 

Puis dans la doc dir vous pouvez ajouter un Makefile avec une règle comme

%.pdf: %.tex 
     $(PDFLATEX PATH) --output-dir=$(DIR) $< 
+0

La question est pas écrire le makefile pour ma documentation, ni comment appeler spécifiquement de la ligne de commande . Ce que je veux pour le makefile de répertoire de base pour reconnaître que je demande la documentation plutôt que l'exécutable, et il sera exécuté l'autre makefile ou non, au besoin. –

+0

une commande dans votre haut niveau makefile: docs: $ (MAKE) docs -C tous fera l'affaire, j'ai révisé la réponse pour plus de clarté – dcolish

+0

qui a fait exactement ce que je voulais, merci. –

Questions connexes