4

私はValaを使用しています。これは最初に C にコンパイルされ、次に通常どおり C からコンパイルされます。

(Vala コンパイラ) の機能の 1 つは、ファイルvalacの「fast-vapi」を生成することです。.valafast-vapi は基本的に、ファイル用に生成されたヘッダー ファイル.valaです。fast-vapis のポイントは、インクリメンタル ビルドを許可することです。

したがって、プロジェクトをビルドするための単純化された一連のコマンドは次のようになります。

valac --fast-vapi=source1.vapi source1.vala # generate source1.vapi
valac --fast-vapi=source2.vapi source2.vala # generate source2.vapi
valac -C --use-fast-vapi=source2.vapi source1.vapi # generate source1.c
valac -C --use-fast-vapi=source1.vapi source2.vapi # generate source2.c

の cmake 依存関係を記述するときsource1.c、1 つのアプローチは、それがすべての fast-vapi に依存するが、それ自体に依存することです。これは、他の .vapis への変更が影響しないことが多いため、大規模なプロジェクトではすぐに面倒になりますsource1.vala。したがって、フラグvalacをサポートします:--deps

valac -C --deps=source1.dep --use-fast-vapi=source2.vapi source1.vapi

これにより、 in の make スタイルの依存関係が生成さsource1.depsource1.depます。例えば:

source1.dep: source2.vapi source5.vapi ...

プレーンを書いていたらMakefile、単純にinclude source1.dep. ただし、同様の構成が見つかりませんcmake

生成された make スタイルの依存関係ファイルを に含めるにはどうすればよいcmakeですか?

4

1 に答える 1

1

Vala コンパイラは、変更されていない場合、新しい C ファイルを書き込みません。プログラムが複数のソース ファイルで構成されていて、再コンパイルする場合、Vala コンパイラは変更された C およびヘッダー ファイルのみを更新し、C コンパイラの依存関係プロセスは残りを取得できます。

make と autotools を使用する Vala コンパイラ自体は、Vala コンパイラとビルド システムの間の依存関係に関する情報を提供しません。Vala コンパイラが呼び出されて C ファイルを生成し、C ファイルの依存関係を判断するための autotool の方法が引き継がれます。CMake でロジックを使用できない理由はありません。

于 2012-08-15T13:29:58.477 に答える