NimのWindows向けインストール方法をメモしておきます。
検証した環境は以下の通り。
- Windows 10 Pro
- Nim 0.17.2, 0.18.0, 0.19.6 (64bit)
もくじ:
インストール
NimはC言語に依存している言わばトランスパイラなので、別途Cコンパイラが必要になります。Cコンパイラ、Nimコンパイラとも基本はバイナリ一式の設置とパス(ユーザ環境変数)の設定でインストールしていきます。
公式のインストール方法はこちら。
Cコンパイラの設置
NimはCコンパイラに依存しているので、どこぞからかWindows用のものを入手します。
ここでは公式ページに掲載されているもの(64bit版MinGW)を素直に導入することにしました。
任意のディレクトリに解凍し、bin
ディレクトリへパスを通しておきます。
ユーザ環境変数Path
に追加しておけばとりあえず問題ないはず。
いつものコンパネ→システム→システムの詳細設定から環境変数の設定画面を開けます。
ただし。環境によっては名前にスペースを含むパスに設置するとエラーになる場合があるので、できれば英数かつスペースなしのディレクトリが望ましいです。
今回は例としてC:ドライブ直下にnim
という名前のディレクトリを作成し、全てそこに配置することにしました。
一応、パスが通っているか確認。設置先のパスは例です。
1 2 | > where gcc C:\nim\mingw64-6.3.0\mingw64\bin\gcc.exe |
Nim本体の設置
公式ページにあるNim本体をダウンロードします。今回は64bit版のZipファイルをダウンロードし、C:\nim
以下に展開しておきます。
展開したディレクトリ直下にあるfinish.exe
を実行すると一通りパスの設定ができるようになっています。以下は一応、管理者権限で開いたコマンドプロンプト等で実行した例です。以下バージョンは適宜読み替えて下さい。
1 2 3 4 5 6 7 8 9 | # インストールディレクトリのfinish.exeを実行 C:\nim\nim-0.17.2_x64\nim-0.17.2>finish.exe nim.exe is not in your PATH environment variable. Should it be added permanently? (y/n) y MingW installation found at C:\nim\mingw64-6.3.0\mingw64\bin Do you want to patch Nim's config to use this? (Not required since it's in your PATH!) (y/n) y Would like to add Nim-0.17.2 to your start menu? (y/n) y |
設定項目は上のように表示されるメッセージの通り。
前のセクションで設置したCコンパイラを呼ぶためのパスが必要なのですが、上の例では設定ファイルに書き込むようになっていますね。
パスが通っていれば、nim
コマンドを引数なしで実行するとヘルプが表示されるはずです。
1 2 3 4 5 6 7 8 9 10 11 12 | PS > nim Nim Compiler Version 0.17.2 (2017-09-07) [Windows: amd64] Copyright (c) 2006-2017 by Andreas Rumpf :: nim command [options] [projectfile] [arguments] Command: compile, c compile project with default code generator (C) doc generate the documentation for inputfile doc2 generate the documentation for inputfile ... Note, single letter options that take an argument require a colon. E.g. -p:PATH. |
インストールは以上、なのですが、うまく行かない場合は次のセクションを確認して下さい。
設定の確認
上記の手順でとりあえずインストールできているはずですが、コマンドが通らなかったりコンパイル時にエラーを吐く場合は以下を確認して下さい。
finish.exe
が期待通りに実行されれば、ユーザ定義の環境変数Path
にNimのパスが設定されているはずです。システムの詳細設定から確認して下さい。一部のアプリケーションではシステム側のPath
を見ていることがあり、この場合には再起動が必要です。
また、(必須ではないようですが)Nimの設定にCコンパイラのbin
ディレクトリが指定されていることを確認します。
Nimインストールディレクトリ以下のconfig/nim.cfg
ファイルの中に以下が記述されているはずです。記述がなく、NimがCコンパイラを認識していないようであれば追加して下さい。
1 2 3 4 5 6 7 | # Configuration for the GNU C/C++ compiler: @if windows: gcc.path = r"C:\nim\mingw64-6.3.0\mingw64\bin" @if gcc: tlsEmulation:on @end @end |
ツールの導入
VSCodeで参照しているような整形用のnimpretty
など、初期の状態ではビルドされていないようです。
インストールディレクトリにあるkoch
コマンドを使ってツール類をビルド/導入します。
1 2 3 4 | > cd C:\nim\nim-0.19.6 > .\koch.exe tools bin\nim.exe c --noNimblePath -p:compiler -d:release -o:bin\nimsuggest.exe nimsuggest/nimsuggest.nim Hint: ... |
テスト
テスト用のプログラム(testlist.nim
)です。拡張子.nim
で保存します。
基本はUTF-8で良いと思います。
Pythonで言うところのos.listdir()
的なものを使ったサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import os proc listItems() : int = let cwd: string = getAppDir() var count: int = 0 # scan current dir for kind, path in walkDir(cwd): echo("type:", kind, " path:", path) count += 1 result = count var itemsNum: int = listItems() echo("includes:", itemsNum, " items") |
単純にnimファイルを指定してコンパイルすると、同じディレクトリに同じ名前の実行ファイルが吐かれます。デバッグビルドなので最適化はなし。一応リリースビルドにしたければ-d:release
オプションを付けます。
コンパイルから実行ファイルのテストまで一連のコマンドは下記のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | > cd C:\path\to\dir > nim c testlist.nim ... > ls nimcache/ testlist.exe* testlist.nim > .\testlist.exe type:pcDir path:C:\path\to\dir\.git type:pcFile path:C:\path\to\dir\.gitignore type:pcDir path:C:\path\to\dir\nimcache type:pcFile path:C:\path\to\dir\testlist.exe type:pcFile path:C:\path\to\dir\testlist.nim includes:4 items |
コンパイルの実行中に同じディレクトリにキャッシュ用のディレクトリnimcache
が作成され、トランスパイルされたCファイルやオブジェクトファイル等が出力されているのが確認できます。
このキャッシュ用のディレクトリnimcache
はgitignoreに書いておくとよいと思います。