Créer une source avec deux cibles
-
09-06-2019 - |
Question
J'utilise cet outil appelé C++ paresseux qui divise un seul fichier C++ .lzz en un fichier .h et .cpp.Je veux Makepp je m'attends à ce que ces deux fichiers existent après ma règle de création de fichiers .lzz, mais je ne sais pas comment mettre deux cibles dans une seule ligne de construction.
La solution
Je n'ai jamais utilisé Makepp personnellement, mais comme il s'agit d'un remplacement instantané de GNU Make, vous devriez pouvoir faire quelque chose comme :
build: foo.h foo.cpp
g++ $(CFLAGS) foo.cpp -o $(LFLAGS) foo
foo.h foo.cpp: foo.lzz
lzz foo.lzz
Je ne suis pas non plus sûr de l'invocation lzz, mais cela devrait aider.Vous pouvez en savoir plus à ce sujet sur http://theory.uwinnipeg.ca/gnu/make/make_37.html.
Autres conseils
Lzz est incroyable !C'est exactement ce que je cherchais http://groups.google.com/group/comp.lang.c++/browse_thread/thread/c50de73b70a6a957/f3f47fcdcfb6bc09
En fait, tout ce dont vous avez besoin est de dépendre (généralement) de foo.o dans votre règle de lien et d'une règle de modèle pour appeler lzz :
%.cpp %.h: %.lzz
lzz $(input)
Le reste se mettra en place automatiquement.Lors de la compilation d'une source incluant foo.h ou de la liaison de foo.o à une bibliothèque ou à un programme, lzz sera d'abord appelé automatiquement.
Makepp reconnaîtra également si seul l'horodatage, mais pas le contenu du fichier produit, a changé, et l'ignorera.Mais cela ne peut pas faire de mal de lui donner moins de travail, en utilisant les options lzz pour supprimer la recréation d'un fichier identique.
Cordialement-Daniel