TclTk + [Incr Tcl] + [Incr Tk] + [Incr Widgets] + TclVfs + Metakit をVisualC++を使ってソースから導入するメモ

* 1. ソースのダウンロード
-1.1. TclとTkのソースをダウンロード
-1.2. IncrTclのソースをダウンロード (3.4.1と3.2.1をダウンロード)
-1.3. IncrWidgetsのソースをダウンロード (とりあえず4.0.1でチャレンジ)
-1.4. TclVfsのソースをダウンロード
-1.5. Metakitのソースをダウンロード
* 2. ダウンロードしたアーカイブを展開
作業のベースとなるディレクトリを work、導入先を work / inst とする。
work
/ tcl8.5.10 / winとかunixとか...
/ tk8.5.10 / winとかunixとか...
/ itcl3.2.1 / itclとかitkとか...
/ iwidgets4.0.1 / winとかdocとかconfigureとか...
/ tclvfs-20080503 / winとかmacとか...
/ metakit-2.4.9.7 / winとかunixとか...

itcl3.2.1/itclの中身を消して、itcl3.4.1の内容を書き込む

* 3. Tclのコンパイルとインストール
-3.1. VisualStudio2008コマンドプロンプトを開き、work/tcl8.5.10/winにcdで移動
-3.2. nmake -f makefile.vc OPTS=static,threads
-3.3. nmake -f makefile.vc OPTS=threads
このあたりのオプション設定はお好みに合わせて適宜選択
makefile.vcの中にオプション一覧が書いてあります。
-3.4. nmake -f makefile.vc install OPTS=static,threads INSTALLDIR=..\..\inst
-3.5. nmake -f makefile.vc install OPTS=threads INSTALLDIR=..\..\inst

* 4. Tkのコンパイルとインストール
-4.1. VisualStudio2008コマンドプロンプトでwork/tk8.5.10/winにcdで移動
-4.2. nmake -f makefile.vc TCLDIR=..\..\tcl8.5.10 OPTS=static,threads
-4.3. nmake -f makefile.vc TCLDIR=..\..\tcl8.5.10 OPTS=threads
オプション設定は恐らくtclに合わせる必要あり。
-4.4. nmake -f makefile.vc install OPTS=static,threads INSTALLDIR=..\..\inst
-4.5. nmake -f makefile.vc install OPTS=threads INSTALLDIR=..\..\inst

* 5. IncrTclのコンパイルとインストール
-5.1. VisualStudio2008コマンドプロンプトでwork/itcl3.2.1/itcl/winにcdで移動
-5.2. copy ..\..\tcl8.5.10\win\nmakehlp.exe .
-5.3. IncrTclのmakefile.vcを一部編集
・20行目くらいにある!include "..\..\rule.vc"の次の行に!include "..\..\pkg.vc"を追加
・29行目くらいにあるITCL_DOTVERSIONを設定する処理が書かれている!if から !endifまでのブロック全てをコメントアウト(pkg.vcに書かれている設定を生かす)
・ファイル内の全ての$(_INSTALLDIR) を $(INSTALLDIR)に置換する
・IncrTclのmakefile.vcの
#---------------
# Compile flags
#--------------- の行から!if $(TCL_INCLUDES)の前の行までの内容を消して、同じ場所に
tcl8.5.10のmakefile.vcの
#---------------
# Compile flags
#--------------- の行からTCL_INCLUDES = ... の内容を挿入
・231行目辺りから10行ほど続くechoの行をコメントアウトして、下記の行を加える
!if $(STATIC_BUILD)
echo package ifneeded Itcl $(ITCL_DOTVERSION) [list load [file join $$dir $(ITCLLIBNAME)] Itcl] > \
"$(SCRIPT_INSTALL_DIR)\pkgIndex.tcl"
!endif

-5.4 pkg.vcの3.2を3.4に書き換える
-5.5. nmake -f makefile.vc TCLDIR=..\..\..\tcl8.5.10 OPTS=static,threads
-5.6. nmake -f makefile.vc TCLDIR=..\..\..\tcl8.5.10 OPTS=threads
オプション設定が有効に作用するかどうかは、static以外は検証していません
-5.7. nmake -f makefile.vc install TCLDIR=..\..\..\tcl8.5.10 OPTS=static,threads INSTALLDIR=..\..\..\inst
-5.8. nmake -f makefile.vc install TCLDIR=..\..\..\tcl8.5.10 OPTS=threads INSTALLDIR=..\..\..\inst

* 6. IncrTkのコンパイルとインストール
-6.1. VisualStudio2008コマンドプロンプトでwork/itcl3.2.1/itk/winにcdで移動
-6.2. copy ..\..\tcl8.5.10\win\nmakehlp.exe .
-6.3. makefile.vcを一部編集
・19行辺りの!include "..\..\rule.vc"の前の行にPROJECT = itkとPROJECT_REQUIRES_TK = 1を追加
・22行辺りの!include "..\..\config.vc"をコメントアウト
・30行辺りの!if $(DEBUG)のブロック全部と、その次のTMP_DIRをコメントアウト
・45行辺りと48行目辺りの$(ITK_VERSION)の後ろを$(SUFX)にする(s$(DBGX)や$(DBGX)を$(SUFX)に変える)
・53行辺りの!if $(ISTCLINSTALL)のブロック全て(!endifまで)をコメントアウト
・70行辺りのITCLSTUBLIBのReleaseを$(BUILDDIRTOP)に書き換える
・86行辺りの!if $(STATIC_BUILD) == 0 を !if !$(STATIC_BUILD)に書き換える
・88行辺りのdllResource.objをitk.resに書き換える
・114行辺りの$(USE_TCL_STUBS)を1に書き換える
・120行辺りの
# Compile flags
の行から!if $(ITK_INCLUDES)の前の行までの内容を消して、同じ場所に
tcl8.5.10のmakefile.vcの
# Compile flags
   の行からTCL_INCLUDES = ... の前までを挿入
・163行辺りのITK_EXE_CFLAGSの$(cdebug)の次あたりに$(cflags) $(cwarn)を追加
・166行辺りの!if $(USE_TCL_STUBS)を!if !$(STATIC_BUILD)に書き換える
・185行辺りの@$(vcvars) > nulの行をコメントアウトする
・220行辺りのechoを !if !(STATIC_BUILD) と !endifで囲う
226行辺りの
# Regenerate the stubs files
のブロックをitclのmakefile.vcのものに書き換える
・239行辺りの
# Special case object file targets
の中にあるdllResource.objの行とその次の行をコメントアウトする
・255行辺りと262行辺りにある!if $(_NMAKE_VER) < 162の行のブロック5行のそれぞれ4行目以外をコメントアウト

 !if $(_NMAKE_VER) < 162
{$(WINDIR)}.c{$(TMP_DIR)}.obj :
!else
{$(WINDIR)}.c{$(TMP_DIR)}.obj ::
!endif

 #!if $(_NMAKE_VER) < 162
#{$(WINDIR)}.c{$(TMP_DIR)}.obj :
#!else
{$(WINDIR)}.c{$(TMP_DIR)}.obj ::
#!endif
-6.4. nmake -f makefile.vc TCLDIR=..\..\..\tcl8.5.10 TKDIR=..\..\..\tk8.5.10 OPTS=static,threads
-6.5. nmake -f makefile.vc TCLDIR=..\..\..\tcl8.5.10 TKDIR=..\..\..\tk8.5.10 OPTS=threads
オプション設定が有効に作用するかどうかは、static以外は検証していません。
-6.6. nmake -f makefile.vc install TCLDIR=..\..\..\tcl8.5.10 TKDIR=..\..\..\tk8.5.10 OPTS=static,threads INSTALLDIR=..\..\..\inst
-6.7. nmake -f makefile.vc install TCLDIR=..\..\..\tcl8.5.10 TKDIR=..\..\..\tk8.5.10 OPTS=threads INSTALLDIR=..\..\..\inst