Microsoft Visual C++ Toolkit 2003

マイクロソフトは、2004年4月に、最適化コンパイルが可能なC/C++コンパイラである
Microsoft Visual C++ Toolkit 2003」を無償公開している。
同コンパイラには、「Visual Studio .NET Professional 2003」で使用するコンパイラと
同等のコンパイラが含まれている。
統合開発環境やMFCなどは含まれていないが、TclコアやTcl拡張のビルドに使えます。
今回は、このコンパイラとSDKを使ってTcl/Tkソースコードのコンパイルをしてみた。

Tcl/Tkをコンパイルするには、以下のSDKも必要になります。合わせてインストールします。

このmsvcrt.libは、msvcr71.dllへのインポートライブラリです。
msvcrt.libが必要な為だけに.NETのSDKが必要になります。

デバッガは、Debugging Tools for Windows(WinDbg)が使えます。

Debugging Tools for Windows(WinDbg)

インストール

コンパイラとSDKのインストール方法は、 こちらのページに詳しく書かれているので割愛します。(^^;

Tcl/Tkのコンパイル

コンパイルは、コマンド プロンプトで行います。いわゆるコマンドラインです。
コンパイル前に以下のバッチファイル(setvctk.bat)を実行して環境変数を設定します。

SET PATH=C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;C:\Program Files\Microsoft SDK\Bin;C:\Program Files\Microsoft SDK\Bin\Win64;%PATH%
SET INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;C:\Program Files\Microsoft SDK\Include
SET LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;C:\Program Files\Microsoft SDK\Lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib

今回は、現時点で最新のTcl/Tk 8.5a2のソースをコンパイルした。
Tcl/Tkのソースには、Visual C++用のメークファイルであるmakefile.vcが付属しているが、
Visual C++ Toolkit 2003を使う場合、少し書き換える必要がある。

ファイルの先頭の以下の部分でエラーになるのでコメントアウトした。

#!if !defined(MSDEVDIR) && !defined(MSVCDIR)
#MSG = ^
#You'll need to run vcvars32.bat from Developer Studio, first, to setup^
#the environment.  Jump to this line to read the new instructions.
#!error $(MSG)
#!endif

Tclのコンパイルは、tcl8.5a2\src\winフォルダに移動して以下を実行します。

nmake -f makefile.vc release OPTS=threads
nmake -f makefile.vc install OPTS=threads INSTALLDIR=c:\tcltk
※スレッドを有効にしてコンパイルしています。

Tkのコンパイルは、tk8.5a2\src\winフォルダに移動して以下を実行します。

nmake -f makefile.vc release OPTS=threads TCLDIR=..\..\tcl8.5a2
nmake -f makefile.vc install OPTS=threads INSTALLDIR=c:\tcltk
※スレッドを有効にしてコンパイルしています。

これで問題なくコンパイルできました。とりあえず、Visual C++ 6.0は不要になりました。
どうしても統合開発環境やMFCなどが必要な方は、Visual C++ .NET Standard Version 2003
購入してVisual C++ Toolkit 2003と組み合わせて使うことができます。

最適化について (修正)

オリジナルのmakefile.vcの最適化オプションは、-Op -O2 -Gsになっていますが、
Pentium 4とAthlonに対応した-G7オプションと-Ox(maximum opts)にすると性能が10% UPしました。
どうやら Pentium 4では、-Op -Ox -G7 オプションの組み合わせが最速のようです。

最適化オプションTkEngine値備考
-Op -O2 -Gs87オリジナル
-Op -Ox -G79710% UP!
※ Pentium 4 540(3.20GHz) Hyper-Threading有効で測定

参考文献