私はLazyC ++と呼ばれるこのツールを使用します。このツールは、単一のC++.lzzファイルを.hファイルと.cppファイルに分割します。Makeppに、.lzzファイルをビルドするためのルールの後にこれらのファイルの両方が存在することを期待したいのですが、2つのターゲットを1つのビルドラインに配置する方法がわかりません。
2 に答える
個人的に Makepp を使用したことはありませんが、GNU Make のドロップイン代替品であるため、次のようなことができるはずです。
build: foo.h foo.cpp
g++ $(CFLAGS) foo.cpp -o $(LFLAGS) foo
foo.h foo.cpp: foo.lzz
lzz foo.lzz
また、そこでの lzz 呼び出しについてはわかりませんが、それは役立つはずです。詳細についてはhttp://theory.uwinnipeg.ca/gnu/make/make_37.htmlを参照してください。
Lzzすごい!これはまさに私が探していたものですhttp://groups.google.com/group/comp.lang.c++/browse_thread/thread/c50de73b70a6a957/f3f47fcdcfb6bc09
実際に必要なのは、リンク ルールの foo.o と lzz を呼び出すパターン ルールに (通常は) 依存することだけです。
%.cpp %.h: %.lzz
lzz $(input)
残りは自動的に配置されます。foo.h を含むソースをコンパイルするとき、または foo.o をライブラリまたはプログラムにリンクするとき、最初に lzz が自動的に呼び出されます。
Makepp は、生成されたファイルの内容ではなくタイムスタンプのみが変更されたかどうかも認識し、それを無視します。しかし、lzz オプションを使用して同一ファイルの再作成を抑制することにより、やることを減らしても害はありません。
よろしく -- ダニエル