web-dev-qa-db-ja.com

ソース内ビルドとソース外ビルド

私の(主にC++)開発では、長い間、アウト・オブ・ソースのビルドの使用に固執してきました。つまり、私のソースは通常/project/srcディレクトリとビルドは/project/build/bin/release/project/build/bin/debugディレクトリ。これを行ったのは、中間ファイルからソースディレクトリをクリーンに保ち、すべてのバイナリを1か所にまとめ、パッケージ化がより簡単になり、クリーニングがより簡単になり、バージョン管理がより簡単になるからです。 (何か見逃しましたか?)

現在、ソース内ビルドを使用する(大きな)プロジェクトを継承しています。このタイプの構造の動機は何ですか?その利点は何ですか? (私は、エンジニアリングレベルの理由と個人的な好みの理由のタイプに最も関心があります。)

Lakosの "Large-Scale C++ Software Design"がそれを考慮に入れてくれることを期待していましたが、そうした場合は見逃しました。

9
DiB

ここでコミュニティに質問し、オンラインで検索を続けた後、ソース内ビルドを使用するための重要なエンジニアリングの正当性を見つけることができませんでした。 (それらを避ける理由の多くの例があります。)

私が見つけた唯一の客観的な理由(@BartvanIngenSchenauによるコメントで暗示されているように)は、ソース内ビルドがビルドシステムによってデフォルトにされることが時々あるということです。このデフォルトのため、セットアップ時間にオーバーヘッドは必要ありません。これは、非常に小さな(またはスクラッチ)プロジェクトでは完全に許容できる場合があります。

8
DiB