Help us understand the problem. What is going on with this article?

Visual Studio 2017でTcl/Tk 8.6.9をコンパイルする

More than 1 year has passed since last update.

はじめに

Tkを使うとクロスプラットフォームなGUIアプリケーションを簡単に作ることができます。Tclの人気はいまひとつですが,Tkはさまざまな言語のバインディングがあり,いい意味で枯れたGUIツールキットとして広く使われています。

Tkのtutorialには,同じアプリケーションがTk,RubyTk, Tkinterで書かれています。PythonにはTkinterがついてくるのですが,wishやtclshは見当たらないので,インストールすることにしました。

Tcl/TkはActiveTclのバイナリやパッケージ管理システムのものをインストールすることが多いと思いますが,Windows 10でソースからコンパイルしてみることにしました。Tkのコンパイルにつまづいたので,やりかたをまとめておきます。

追記 2019/6/22

  • パスの誤りなどを修正しました。
  • Visual Studio 2019でやってみました。
  • x64_x86 Cross Tools Command Prompt for VS 2019でx86バイナリの作成ができました。
C:\Users\takeshi\Downloads\destroot\bin>dumpbin /headers wish86t.exe | findstr machine
             14C machine (x86)
                   32 bit word machine

Windows 10 SDK

Tcl-8.6.9は[How to Compile Tcl]のとおりにやればコンパイルが通ります。Tk-8.6.9のコンパイルが通るのは,Windows SDK 10.0.15063.0までです。TclとTkとでSDKのバージョンが違うとTkのリンクに失敗します。そこで,コンパイルに取り掛かる前にSDKを準備します。Tcl/Tk-8.6.9時点での情報です。それ以降のバージョンでは,古いSDKのインストールは不要かもしれません。

インストール

Visual Studio Installerを起動します。インストーラ自身やインストールされているものの更新が始まるかもしれません。

  • Visual Studio Community 2017の「変更」ボタンをクリックします。
  • 「ワークロード」タブの「C++によるデスクトップ開発」にチェックを入れます。
  • 「インストールの詳細」の「C++によるデスクトップ開発」から「Windows 10 SDK (10.0.15063.0)」にチェックを入れます。
  • 「ダウンロードしながらインストールする」あるいは「全部ダウンロードしてからインストールする」を選択してクリックします。

SDKの選択

スタートメニューから「Visual Studio 2017」を開いて「開発者用コマンドプロンプト」を実行します。varsall.batのあるディレクトリに移動します。

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build

Building with Visual Studio 2017にある通り,バッチvarsallを実行します。

vcvarsall x64 10.0.15063.0 

x86用のバイナリを作るときはx64の代わりにx86とします。

Tcl/Tkのコンパイル

  • tcl869-src.zipをダウンロードして展開します。
  • インストール先INSTALLDIRを決めます。なければ作成します。私はAppData\Local\Programs\Tclにしました。
  • tcl869-src\tcl8.6.9\winに移動してコンパイル・インストールします。
> nmake -f makefile.vc INSTALLDIR=path_to_your_install_dir
> nmake -f makefile.vc install INSTALLDIR=path_to_your_install_dir
  • tk869-src\tk869\winに移動してコンパイルします。TCLDIRはTclのソースを指定します。上の例ではtcl869-src\tcl8.6.9です。
nmake -f makefile.vc INSTALLDIR=path_to_your_install_dir TCLDIR=path_to_tcl_source
nmake -f makefile.vc install INSTALLDIR=path_to_your_install_dir TCLDIR=path_to_tcl_source
  • 必要に応じてtclsh86t.exetclsh.exewish86t.exewish.exeに改名します。
  • TCLDIR\binにパスを通しておきます。

ソースからのコンパイルは気持ちがいい。

tenomoto
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away