Windows で lctags (C言語/C++ のタグジャンプ、コールグラフ、etc..)
C/C++ のコーディングサポートツールとして lctags を開発していますが、 Linux 上で動作させることを想定して開発しています。
とはいえ、日本のエンジニアは Windows を使用している方が多いと思います。 特に日本の企業では、会社の基幹システムが MS 系アプリ前提で構築されていることが多いため、 必然的に Windows を使用することになると思います。
そこで、ここでは Windows 上で lctags を利用する方法について説明します。
なお、PC のシステム管理者権限が制限されている残念な環境では、 今回説明する方法は利用できません。
cygwin
Windows で lctags を動かすには、 cygwin が必要です。
Windows10 で Windows Subsystem for Linux が使用可能になりましたが、 そちらの環境では動作確認していません。
cygwin では、次のパッケージを導入してください。
- lua 5.2.4
- lua-devel 5.2.4
- swig 3.0.12
- libclang 5.0.1-2
- libclang-devel 5.0.1-2
- openssl
- openssl-devel
- curl
- make
- unzip
- gcc
必ず環境変数の PATH 設定で、 cygwin が先頭に来るように設定してください。 find 等のコマンドが、cygwin ではなく Windows 側のコマンドを使われると正常に動作しません。
lctags のビルド
lctags のビルド手順を示します。
lctags を clone
git で lctags を clone してください。
$ git clone https://github.com/ifritJP/lctags.git
lctags/src/makefile の編集
lctags/src/makefile の次の項目を編集してください。
SO=dll
LUA_COMMAND=lua
LUA_INC=/usr/include
LUA_LDFLAGS=
LUA_SO=-llua
LIBCLANG_INC=/usr/include
LIBCLANG_LIB=/lib
LIBCLANG_STD_INC=/lib/clang/5.0.1/include
luasqlite3 のダウンロード
次のコマンドを実行。
$ make download_luasqlite3 [PROXY=http://proxy.hoge:port]
PROXY が必要な場合は、PROXY を指定してください。
ビルド&インストール
次のコマンドを実行。
$ make build
$ make install
~/.bashrc の編集
~/.bashrc に次を追加。
export PATH=/usr/local/bin:${PATH}
cygwin のコンソールを再起動。
以上で、 cygwin のコンソールから lctags を使用できます。
Windows の lctags について
ここまで Windows で lctags を使うための方法を説明してきてアレですが、 個人的には Windows 上で lctags を利用するのはオススメしません。
それは、Linux に比べると Windows はオーバーヘッドが大きく、 その分 C/C++ コード解析に時間が掛るためです。
Windows と Linux とで、 Lua-5.3.4 ソースの解析にかかる時間を次に示します。 なお時間計測に利用した PC は、Windows, Linux ともに同一のものです。
- linux
real 0m12.931s
user 0m16.061s
sys 0m6.421s
- Windows
real 0m20.396s
user 0m32.066s
sys 0m17.433s
上記の結果から、Windows の方が倍近い時間が掛っていることが分かります。
Windows で lctags を使用するよりは、 Windows 上に Linux の VM を動かし、 VM 上で lctags を使用する方がパフォーマンスが上がります。
Linux を利用出来ない特別な理由がない限り、 Linux で lctags を使用することをオススメします。