これは Qt や moc というよりも GNU Make に関する質問だと思いますが、ここに行きます。
複数の を含むディレクトリがありQ_OBJECTS
、これらすべてを収集する単純なコードがあります。
MOCS := $(shell grep -l Q_OBJECT $(HEADERS))
HEADERS
「現在の場所」にあるヘッダーファイルのコレクションであると仮定します
ここでやりたいことは、Qt moc を呼び出して .C ファイルをビルドし、それをオブジェクトにコンパイルするルールを指定することです。そのようなルールをどのように指定しますか?
私の出発点は愚かです:
MOC_SOURCES := $(MOCS:%.h=%.C)
MOC_OBJECTS := $(MOC_SOURCES:%.C=%.o)
$(MOC_SOURCES) : $(MOCS)
@echo "Building Moc: $@ from $<"
$(MOC) $< -o $@
何が起こっているのかというと$<
、最初のヘッダーであり、関連するヘッダーではなくこのヘッダーを使用してすべてのオブジェクトがコンパイルされるため、これはばかげています。
正しい moc オブジェクトが正しいヘッダーから構築されるように、これをクリーンアップする方法はありますか?