58個のターゲットを持つ新しいメソーンプロジェクトがあります。それらの多くは同じ* .ccファイルを使用し、メソーンはターゲットごとに* .ccファイルを1回構築します。これはautotoolsよりもはるかに低速です。また、コンパイルフラグはターゲット間で同じにする必要があります。そのため、理論上メソンはオブジェクトを再利用できるはずです。多くのターゲットが同じC++ソースを使用する場合、どのようにMesonビルドを高速化しますか
メソーンでよくサポートされている多くのターゲットを構築していますか?このような状況のための標準的なソリューションはありますか?プロジェクトのすべてのソースを共有ライブラリに整理しようとする可能性がありますが、それらをグループ化する方法を決める必要があり、オートツールではそれを決める必要はありません。私はこれに関する文書を見つけることができなかった。
-BenRI
P.S.
--------ファイル:app1.cc -------
int f(int x ,int y) {return x;}
int main() { return f(0,1);}
------ファイル:ここでは、最小限の例ですmeson.build - ---
project('app12','cpp')
executable('app1',['app1.cc'])
executable('app2',['app1.cc'])
----------コマンド-----------
% meson . meson
% cd meson
% meson configure -Dwarning_level=3
% ninja
あなたのsh使用されていないパラメータ「y」の警告が2回表示されます。 ファイルcompile_commands.jsonには、app1.ccの2つのエントリもあります。あなたは、日付と時間 ようunreproducible build tricksを持っていない限り、それは同じ バイナリファイルを生成しますので、再び同じ再び同じコンパイルフラグでコンパイルされたソースと を持つ
[ドキュメント](http://mesonbuild.com/Build-targets.html#object-files)でターゲット間のオブジェクトファイルの再利用について議論しましたか? – Useless
を表示するMCVEを作成していないので、より具体的にすることは不可能です。うん、それを読んだ。上記の方法で単体テスト実行可能ファイルを生成するためにのみ、この機能を使用することを強くお勧めします。また、ビルドターゲット間で共有されているソースファイルごとに抽出されたオブジェクトを手動で作成することは、システムが既に知っているものをユーザーが指定し、ユーザーが間違ってしまう可能性があるため、中間子のようには見えません。 –
MCVEを追加することができますが、各ターゲットのソースファイルを再構築すると、認識された動作(私は思います)が表示されます。 –