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


9

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

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

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


2
謝罪。私は「ソース内ビルドで「x」を改善する」または「「y」を確実にするのに役立つ」または「自動テストで「z」を使用できる」を探しています。暴言ではありません。私は特にここで意見の戦争に参加したくありません!
DiB

10
ソース内ビルドは、前任者の怠惰に負う呪いです。彼らはすべて(ソース管理、クロスビルド、テキスト検索など)についてはひどいですが、裸のmakefileを使用して非常に簡単に作成できます。申し訳ありませんが、これは暴言でした。しかし、客観的なもの。

1
「インソース」ビルドとはどういう意味ですか?のようなもの/project/src/bin/release、または本当にすべての中間ファイルと出力ファイル/project/src?12個以上のソースファイルがある場合、後者は実際に混乱する可能性があり、前者は問題ありません。
ドクブラウン

2
@Tibo、それはメイクファイルで信じられないほど簡単なだけでなく、ほとんどのIDEでもデフォルトになっているようです(少なくとも数年前にチェックしたとき)。
Bart van Ingen Schenau

4
@BartvanIngenSchenau本当に?この場合、どのIDEを使用していますか?Qtはこれを実行しません。実際、ビルドはソースから可能な限り離れているようです。Eclipseはこれを実行しません。Clionがこれを実行していると主張するかもしれませんが、これはmain.cpp 最初はプロジェクトのトップレベルにありますが、ソースから離れた別のcmakeビルドディレクトリがそのトップレベルに作成されます。この点でもMSVSはClionに似ていると思います。
2018

回答:


8

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.