LoginSignup
24
19

More than 5 years have passed since last update.

universal ctagsをビルドする

Last updated at Posted at 2015-07-09

vim-jpでも紹介されているように、universal ctagsに、エンコーディング変換機能が追加されました。

この機能を有効にしたctagsをビルドしてみましょう。

基本的なビルド手順

基本的なビルド手順は、以下の公式ドキュメントを参考にしてください。

WindowsでMSYS2を使う場合

MinGW-w64 Win32 Shell (32bitの場合)を起動し、以下のコマンドを実行します。

$ git clone https://github.com/universal-ctags/ctags.git
$ cd ctags
$ ./autogen.sh
$ ./configure --enable-iconv --disable-external-sort LDFLAGS=-static
$ make
$ strip *.exe   # 必要に応じて

ポイントは以下の通りです。

  • --enable-iconv: エンコーディング変換機能を有効にする。
  • LDFLAGS=-static: libiconvを静的リンクする。
  • --disable-external-sort: 外部のsortコマンドを使わず、内蔵のsort機能を使用する。

ctagsのバージョン情報に、+multibyteが含まれていれば、エンコーディング変換機能が有効になっています。

$ ./ctags --version
Universal Ctags Development, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Jul 10 2015, 00:04:55
  Addresses: <dhiebert@users.sourceforge.net>, https://github.com/universal-ctags/ctags
  Optional compiled features: +win32, +wildcards, +regex, +internal-sort, +multibyte, +debug

小技

適当なディレクトリを作成してその中でconfigureを実行すると、そのディレクトリを作業ディレクトリとすることが出来るので、複数のビルド設定を簡単に共存できます。

$ ./autogen.sh
  # iconvを動的リンク
$ mkdir build-dynamic-iconv
$ cd build-dynamic-iconv
$ ../configure --enable-iconv --disable-external-sort
$ make
$ cd -
  # iconvを静的リンク
$ mkdir build-static-iconv
$ cd build-static-iconv
$ ../configure --enable-iconv --disable-external-sort LDFLAGS=-static
$ make

Windowsでcmd.exe上からMinGWを使う場合

mingw32-make -f mk_mingw.mak WITH_ICONV=yes LDFLAGS="-s -static"

WindowsでVisual Studioを使う場合

WindowsでVS2013/VS2015を使う場合

まずは、libiconvをビルドする必要があります。公式のlibiconvはVCに対応していないため、koron氏のVC移植版をビルドします。ここでは、C:\work\libiconvでビルドし、C:\work\iconvにインストールすることにします。
なお、libiconvをスタティックリンクする方法は若干面倒なため、iconv.dllをビルドしてダイナミックリンクで使う方法を説明します。

rem libiconvをビルド
set ICONV_BUILD_DIR=C:\work\libiconv
rem win32.makがある場所をINCLUDEに追加。VS2012(VC11)以降で必須。
set "INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include"
git clone https://github.com/koron/libiconv.git %ICONV_BUILD_DIR%
cd %ICONV_BUILD_DIR%\msvc10
rem msvcrXX.dllにリンクしない設定で、リリース版のDLLをビルド
nmake NODEBUG=1 NOMSVCRT=1

rem libiconvをインストール
set ICONV_DIR=C:\work\iconv
mkdir %ICONV_DIR%\include
mkdir %ICONV_DIR%\lib
copy %ICONV_BUILD_DIR%\msvc10\iconv.h   %ICONV_DIR%\include
copy %ICONV_BUILD_DIR%\msvc10\iconv.lib %ICONV_DIR%\lib

次に、universal ctagsをビルドします。

cd c:\work
git clone https://github.com/universal-ctags/ctags.git
cd ctags
nmake -f mk_mvc.mak WITH_ICONV=yes ICONV_DIR=%ICONV_DIR%

実行の際には、iconv.dllが必要なため、libiconvのビルドディレクトリからコピーしてきます。

copy %ICONV_BUILD_DIR%\msvc10\iconv.dll .

WindowsでVS2010を使う場合

universal ctagsをビルドするにはVS2013以降が必須とされていますが、koron氏がVS2010でビルドできるように改造した版を公開しています。(https://github.com/koron/ctags/tree/vc10)

ビルド方法は、そのリポジトリのWikiを参照してください。(libiconvは、VS2013と同じ方法でビルドしてください。)

Linux等

$ git clone https://github.com/universal-ctags/ctags.git
$ cd ctags
$ ./autogen.sh
$ ./configure --enable-iconv
$ make
$ sudo make install
24
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
19