2008-08-30 7 views
2

Ich benutze dieses Tool mit der Bezeichnung Lazy C++, das eine einzelne C++ .lzz-Datei in eine .h- und .cpp-Datei aufteilt. Ich möchte Makepp erwarten, dass diese beiden Dateien nach meiner Regel zum Erstellen von .lzz-Dateien existieren, aber ich bin mir nicht sicher, wie ich zwei Ziele in eine einzelne Build-Zeile einfügen kann.Quelle mit zwei Zielen erstellen

Antwort

3

Ich habe noch nie Makepp persönlich in Anspruch genommen, aber da es sich um ein Drop-in-Ersatz ist für GNU Make, sollten Sie in der Lage sein, etwas zu tun wie:

build: foo.h foo.cpp 
    g++ $(CFLAGS) foo.cpp -o $(LFLAGS) foo 

foo.h foo.cpp: foo.lzz 
    lzz foo.lzz 

auch nicht sicher über die LZZ Aufruf dort, aber das sollte helfen. Sie können mehr darüber unter http://theory.uwinnipeg.ca/gnu/make/make_37.html lesen.

2

Lzz ist erstaunlich! Das ist genau das, was ich suchte http://groups.google.com/group/comp.lang.c++/browse_thread/thread/c50de73b70a6a957/f3f47fcdcfb6bc09

Eigentlich alles, was Sie brauchen, ist (in der Regel) auf foo.o in Ihrer Link-Regel ab, und eine Musterregel nennen LZZ:

%.cpp %.h: %.lzz 
    lzz $(input) 

Der Rest wird automatisch einrasten. Beim Kompilieren einer Quelle, die foo.h enthält oder foo.o mit einer Bibliothek oder einem Programm verbindet, wird lzz zuerst automatisch aufgerufen.

Makepp erkennt auch, wenn nur der Timestamp, aber nicht der Inhalt der produzierten Datei geändert wird, und ignoriert dies. Es kann jedoch nicht schaden, es weniger zu tun, indem die lzz-Optionen verwendet werden, um die Neuerstellung einer identischen Datei zu unterdrücken.

Grüße - Daniel

+0

Danke für den Link, es ist eine interessante Diskussion. Übrigens bin ich total bei dir, und ich weiß es zu schätzen, dass du geduldig bist und deine Position fließend erklärst, besonders angesichts einiger unhöflicher Antworten. –

Verwandte Themen