« EeePC901の初期設定 | トップページ | menucomplete.msのクラスメンバ補完を強化する »

ctagsをWin32環境でビルドする

とある事情でctagsを改造したくなったのですが、Win32環境でビルドするまでがかなり大変でした。以下にやり方をメモしたいと思います。

まず前提として、ctagsのWin32用のソースは、書き方が古すぎて現行のVisual Studio 2005やVisual Studio2008ではコンパイルできないようです。古い書き方を許容するようなオプションがあるかもしれないのですが、一通り探しても見つからなかったので諦めました。

となると、コンパイルするには古いコンパイラが必要となってきます。幸いなことに、Visual Studio 2003のC++コンパイラ部分を抜き出したツールであるMicrosoft Visual C++ Toolkit 2003というものが無料で手に入ります。これに付属するコンパイラを使用すれば、ctagsをコンパイルすることができます。
ただし、残念ながらMicrosoftの公式サイトではこのツールは現在ダウンロードできないようです。非公式ではありますが、こちらのmsdnのフォーラムのリンクからダウンロードできます。

また、ctagsのコンパイルには、nmake等のビルドを行うためのツールやライブラリ等が含まれるPlatform SDKが必要になります。僕はこちらの246netさんのまとめページを参考にして設定しました。インストールした

C:\Program Files\Microsoft Visual C++ Toolkit 2003\vcvars32.bat
に、以下のような内容を書き加えます。
REM add for Platform SDK
set CPU=i386
set MSSdk=C:\Program Files\Microsoft Platform SDK
set LIB=%MSSdk%\Lib;%LIB%
set INCLUDE=%MSSdk%\Include;%INCLUDE%
set TARGETOS=WINNT
set PATH=%MSSdk%\Bin;%MSSdk%\Bin\winnt;%PATH%
あとはctags日本語版の配布ページに行ってソースをダウンロードし、適当な場所に展開して、先ほどのvcvars32.batを実行した状態で展開した場所に移動し、
nmake /f mk_mvc.mak
とします。(mk_mvc.makというのは、Win32環境用のメイクファイルです。)

ただ、残念ながらこれだけではうまく行きません。メイクするとソースが全部コンパイルされて、大丈夫なように思えるのですが、最後のリンクするところで

LINK : fatal error LNK1181: cannot open input file 'setargv.obj'
NMAKE : fatal error U1077: 'cl' : return code '0x2'
と怒られて終了してしまいます。どうやらsetargv.objがない、というエラーのようです。
Googleで調べてみたところ、setargv.objはワイルドカード展開を行うためのライブラリだそうで、使うには自分でPlatform SDKのソースをコンパイルする必要があるみたいです。こちらのtorutkの日記さんの記事を参考にして、
cd "C:\Program Files\Microsoft Platform SDK\src\crt"
cl /I. /c -D_CRTBLD setargv.c
でcrtフォルダにsetargv.objを作成することができました。このファイルをctagsを展開したフォルダに入れて再度メイクすれば、無事にctagsの実行ファイルを生成することができます。

実際に実行してみると、

% ctags --version
Exuberant Ctags 5.7J1, Copyright (C) 1996-2007 Darren Hiebert
Compiled: Jul 21 2008, 19:49:30
となり、今現在コンパイルしたものであることを確認できました。

ctagsを改造して何をしたかったかなのですが、例によってPeggy関連で、C++のクラスメンバ補完をより高度に行う方法を模索してみようと思っています。うまく成果が出ればよいのですが…。

|

« EeePC901の初期設定 | トップページ | menucomplete.msのクラスメンバ補完を強化する »

「パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/1789/41925790

この記事へのトラックバック一覧です: ctagsをWin32環境でビルドする:

« EeePC901の初期設定 | トップページ | menucomplete.msのクラスメンバ補完を強化する »