5

Boost.Build が #include ディレクティブを再帰的にスキャンするヘッダー ファイルを特定のディレクトリまたはディレクトリのセットに制限する方法はありますか? つまり、プロジェクト内のヘッダー ファイルのみを再帰的にスキャンしたいと考えています。それらの外部依存関係は変更されないことを私は知っています (そして、Boost と Qt はかなり大きいです)。依存関係ツリーに約 50,000 のターゲットがあり、処理に時間がかかります (ファイルが実際に変更されていなくても、ビルド時間は 1 ~ 2 分です)。

これまでに見つけた唯一の解決策は、INCLUDE 環境変数を利用することです (私は MSVC を使用しています)。これは、Boost.Build にインクルード パスを通知する必要がないことを意味します (私はこの機能を使用しています)。それらをスキャンしないでください。これはちょっとしたハックのようです。

ほとんどすぐにこれに遭遇したにもかかわらず、同様の問題を経験している他の人を見つけることができなかったので、私は明らかな何かを見逃しているに違いないと感じています. 一番近いのはここです。

デバッグ出力 (bjam -d 3) から判断すると、ほとんどのヘッダー ファイルも複数回スキャンされます...これが依存関係として複数回追加されることを意味するかどうかはわかりませんが、確かにファイルとコンテンツ全体のスキャンを合計する必要がありますか?

ヘッダー ファイルが変更されないことを保証できる特定のディレクトリまたは一連のディレクトリをわざわざスキャンしないように指示できれば、それは完璧です。

4

2 に答える 2

3

この質問は Boost メーリング リストにも投稿されており、こちらで回答を得ています: http://lists.boost.org/boost-build/2009/04/21734.php

したがって、これまでのところ、Boost.Build にはこの機能がなく、Boost.Build をニーズに合わせてカスタマイズすることで解決できるというのが答えのようです。これにはある程度の意味があります。

しかし、なぜこれが人々にとってより一般的な問題ではないのか、私はまだ興味があります. 依存関係をキャッシュすると時間が短縮されることがわかりますが、確かにすべての外部ライブラリをスキャンすると、巨大な依存関係ツリーになってしまい、その多くは冗長ですか? 私がプロジェクトに取り組んでいるとき、サードパーティのライブラリをあまり頻繁に変更するつもりはありません。依存関係のチェックにお金を払うのは残念です。

于 2009-04-27T23:50:37.557 に答える