- PR -

ビルドとリビルドとクリーン

1
投稿者投稿内容
がらす
ベテラン
会議室デビュー日: 2005/07/14
投稿数: 99
投稿日時: 2006-10-11 03:25
いつもお世話になっております。

VS2005において(多分2003でも同じ?)
ビルド=変更が行われた部分だけビルドする
リビルド=変更に関わらず、全てをビルドする
クリーン=過去のビルドによる生成物を全て消去する(次にビルドをしてもリビルドしても変わりない状態にする)
だと理解しているのですが(合ってますか?)、

1 「ビルドではなくリビルドする必要がある」という状態の必要十分条件はなんなのでしょうか?リソースを追加するとリビルドが必要らしいとか、ビルドが上手く行かなかったらリビルドしてみろとかいうレベルから脱却したいと思っています。
2 「クリーンしてからビルド(若しくはリビルド)」と「単にリビルド」には何か違いがあるのでしょうか?もし無いのなら、何のためにクリーンするのでしょう?

短くハッキリ、スッキリした答に最終的にはたどり着きたいと思っています。「ビルド」「リビルド」で検索してみましたが、ツボの周囲を突付くような知識が増えただけで終わってしまいました。

よろしくおねがいします。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-10-11 08:53
引用:

VS2005において(多分2003でも同じ?)
(略)
だと理解しているのですが(合ってますか?)、



よろしんじゃないでしょうか。

引用:

1 「ビルドではなくリビルドする必要がある」という状態の必要十分条件はなんなのでしょうか?



「いろいろ」です。
世にトラブルの種は尽きません。

「ビルド」は「依存関係のあるファイル間のタイムスタンプの比較」によってビルドアクション(=コンパイルなど)の要不要を判断しています。
必ずしも「ファイルの変更」を検出しているわけではありません。

なので、なんらかの理由によって依存関係のあるファイルのタイムスタンプが逆転してしまうと、ビルドが正常に行われなくなります。

引用:

ビルドが上手く行かなかったらリビルドしてみろとかいうレベルから脱却したいと思っています。



実際にはそんなもんでしょう。
ちゃんと調べれば原因が見つかる可能性は大ですが、余程酷い状況にでもならない限り(調査するのが)面倒ですもん。

引用:

2 「クリーンしてからビルド(若しくはリビルド)」と「単にリビルド」には何か違いがあるのでしょうか?
もし無いのなら、何のためにクリーンするのでしょう?



「ビルド」と「リビルド」は違います。
「クリーンしてからビルド」が「リビルド」と等価になります。
がらす
ベテラン
会議室デビュー日: 2005/07/14
投稿数: 99
投稿日時: 2006-10-12 06:10
ご教示有り難うございます。

引用:

渋木宏明(ひどり)さんの書き込み (2006-10-11 08:53) より:
引用:

1 「ビルドではなくリビルドする必要がある」という状態の必要十分条件はなんなのでしょうか?



「いろいろ」です。
世にトラブルの種は尽きません。



では、どういうのが典型的な「絶対リビルドが必要な例」になるのでしょうか?
なにか良いイメージが浮かぶとうれしいのですが。いくつか良い例があると、なにか分かる(分かった気になる)のではないかと思っています。

引用:

引用:

2 「クリーンしてからビルド(若しくはリビルド)」と「単にリビルド」には何か違いがあるのでしょうか?
もし無いのなら、何のためにクリーンするのでしょう?



「ビルド」と「リビルド」は違います。
「クリーンしてからビルド」が「リビルド」と等価になります。



ええ、ですから、クリーンした直後はビルドもリビルドもやることは一緒になるのですよね?
また、クリーンしてからビルドするのと、単にリビルドを行うのは同じ結果になるのですよね?
何のために「クリーン」が独立して存在するのでしょうか?「ビルド」と「リビルド」だけでは問題が起こるのでしょうか?


[ メッセージ編集済み 編集者: がらす 編集日時 2006-10-12 06:12 ]
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-10-12 08:42
引用:

では、どういうのが典型的な「絶対リビルドが必要な例」になるのでしょうか?
なにか良いイメージが浮かぶとうれしいのですが。いくつか良い例があると、なにか分かる(分かった気になる)のではないかと思っています。



前回書きました。
ソースファイルと成果物/中間ファイルのタイムスタンプが逆転してしまっているような場合には「リビルド」する必要があります。
(あるいは最悪の場合手動で調整しなければならない場合もあるでしょう)

こういう状況は、ファイルサーバと自端末の時計がきちんと同期していないなどの理由により、容易に起こる可能性があります。

引用:

ええ、ですから、クリーンした直後はビルドもリビルドもやることは一緒になるのですよね?
また、クリーンしてからビルドするのと、単にリビルドを行うのは同じ結果になるのですよね?



そうです。

引用:

何のために「クリーン」が独立して存在するのでしょうか?



「ビルド」「リビルド」によって作成された成果物や中間ファイルを削除するためです。

メールなどでソースファイルを送信する場合、私は最低限「クリーン」してから zip 圧縮して送信します。
バックアップする場合も最低限「クリーン」します。
1

スキルアップ/キャリアアップ(JOB@IT)