cygwin で doxygen-1.5.2 をコンパイルしてインストールするよのまとめ
id:CCG さんよりトラックバックを受けて、以前書いたエントリをまとめなおしてパッチにしました!
結論
下のパッチを当てると ./configure && make && make install でインストールを完了できます!
パッチ
doxygen-1.5.2_cygwin.patch とかでファイルとして保存して使ってください!
diff -uNr doxygen-1.5.2/configure doxygen-1.5.2.new/configure --- doxygen-1.5.2/configure 2007-04-04 03:45:31.000000000 +0900 +++ doxygen-1.5.2.new/configure 2007-05-31 02:11:16.861358700 +0900 @@ -214,10 +214,7 @@ UNIX_SV:4.2*) f_platform=unixware-g++ ;; - Cygwin:*) - f_platform=win32-g++ - ;; - CYGWIN:*) + Cygwin*|CYGWIN*) f_platform=win32-g++ ;; *MiNT:*) diff -uNr doxygen-1.5.2/src/doxygen.pro.in doxygen-1.5.2.new/src/doxygen.pro.in --- doxygen-1.5.2/src/doxygen.pro.in 2007-02-21 03:27:35.000000000 +0900 +++ doxygen-1.5.2.new/src/doxygen.pro.in 2007-05-31 01:51:43.810462200 +0900 @@ -26,7 +26,7 @@ win32-borland:LIBS += qtools.lib png.lib md5.lib doxygen.lib doxycfg.lib shell32.lib win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk win32:TMAKE_CXXFLAGS += -DQT_NODLL -win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5 +win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5 -liconv win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti INCLUDEPATH += ../qtools ../libpng ../libmd5 . #win32-g++:INCLUDEPATH -= ../libpng diff -uNr doxygen-1.5.2/src/portable.cpp doxygen-1.5.2.new/src/portable.cpp --- doxygen-1.5.2/src/portable.cpp 2007-03-14 01:58:17.000000000 +0900 +++ doxygen-1.5.2.new/src/portable.cpp 2007-05-31 01:58:38.140388700 +0900 @@ -373,7 +373,7 @@ size_t portable_iconv (void *cd, const char** inbuf, size_t *inbytesleft, char** outbuf, size_t *outbytesleft) { -#if (defined(_LIBICONV_VERSION) && (_LIBICONV_VERSION==0x0109)) +#if (defined(_LIBICONV_VERSION) && (_LIBICONV_VERSION>=0x0109)) #define CASTNEEDED(x) (x) #else #define CASTNEEDED(x) (char **)(x)
パッチの当て方
以下のリンクから doxygen のソース tar をダウンロードします。
http://ftp.stack.nl/pub/users/dimitri/doxygen-1.5.2.src.tar.gz
tar と patch ファイルを同じディレクトリにおきます。
$ ls -lF -rwxr-xr-x 1 yagita None 3599976 Apr 28 22:31 doxygen-1.5.2.src.tar.gz* -rw-r--r-- 1 yagita None 1790 May 31 02:15 doxygen-1.5.2_cygwin.patch
doxygen-1.5.2.src.tar.gz を展開します。
$ tar zxf doxygen-1.5.2.src.tar.gz
パッチをあてます。
$ patch -p0 < doxygen-1.5.2_cygwin.patch patching file doxygen-1.5.2/configure patching file doxygen-1.5.2/src/doxygen.pro.in patching file doxygen-1.5.2/src/portable.cpp
コンパイル & インストールします。
$ cd doxygen-1.5.2
$ ./configure && make && make install
やったことまとめ
こんな風にやりましたが、もっといい方法があったら情報ください!
- configure win32-g++ ってするのがめんどくさー
- どうやら uname -s の結果を使って cygwin だったら〜を判定しようとしてる風だったので configure をパッチのように修正しました。
- libiconv をリンク対象として追加
- 以前のエントリを書いてるときには気づいてなかったのですが、doxygen.exe をコンパイルする Makefile である、Makefile.doxygen ファイルの生成元である doxygen.pro.in ファイルがあり、そちらで -liconv を追加するようにしました。これはid:CCGさんのエントリで気づきました。サンクス!
- portable.cpp のコンパイルエラー回避
- cygwin 環境で /usr/include/iconv.h をみると以下のように定義されていたのと、iconv() の第二引数は const char ** だったのでパッチのように修正しました。
#define _LIBICONV_VERSION 0x010B /* version number: (major<<8) + minor */