VC++では、*.vcprojという名前の「プロジェクト定義」ファイルを使います。これはXMLなのだから、テキスト形式になっていますが、CVSでうまく扱えていませんでした。Subversionは、バイナリも (単なる格納と上書きではなくて) 差分として扱えると聞いたので、だったら本来テキストの*.vcprojが扱えないはずがないだろうと思ったのですが、やはりうまくいきませんでした。
そうこうしていたら、ちょうど今週、sldevリストで"Compiling under VS2005"という投稿があり、*.vcprojのことが話題になりました。で、これを機会に真剣に調べてみました。
そうしたら、今までうまく扱えなかった原因は、二つあったことがわかりました。
- 改行コードの問題。VC++のエディタは、CRLF形式でもLF形式でも、どちらでも扱え、編集後にsaveしても元の形式が維持されるのですが、*.vcprojはCRLFでなければならないらしい。と、いうか、LF形式でも読めるのだが、勝手にCRLFに変換してしまうようです。
- XMLのpretty printの問題。VC++ Express 2005をつかっているのですが、プロジェクトエディタが、VS2003形式(?)のpretty printがお気に召さないらしく、改行位置を変更してしまう。
そういうわけで、CVSにせよSubversionにせよ、差分抽出が機能していなかったのでした。
原因がわかれば、対策もかんがえられるよなー、ということで現在検討中。
しかし、どう考えても、
<Tool
Name="VCPreBuildEventTool"/>
を
<Tool
Name="VCPreBuildEventTool"
/>
に強制的に書き換える理由がわからない…。
最近のコメント