概要
- Windows Subsystem for LinuxのUbuntuでdoxygenをmakeした記録です。
- 主にiconv周りでもちゃもちゃしました。
- cmakeは3.10です
参考
http://www.doxygen.jp/install.html など
やったこと
git clone
git clone https://github.com/doxygen/doxygen.git
いろいろ考えて?バージョンを最新の一つ前に戻します。
git checkout Release_1_8_15
依存ライブラリのinstall
公式ドキュメントに書いてありますが、flex, bisonなどが必要です。
またiconvのライブラリも必要のはず。ubuntuは直接libiconvとかが入らないらしく、libc6でなんとかとググると出てきますが……下記でiconvのファイルを入手してコンパイルしておけば後々悩みが少なくなるかもしれません。
wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz
(バージョンは適当に変えてください)
(これのコンパイルはあっさりできたはず)
Qtのインストール
apt-get install qtcreator
apt-get install qt4-default
cmake
いちおうこれでいいはず!でcmakeを開始します。
私は下記により出オチしました。
CMake Error at cmake/FindIconv.cmake:130 (MESSAGE):
Unable to determine iconv() signature
どうやらIconvを見つけるのに苦労してるなって感じで、ここで経緯は省きますが、しかし下記を使えばどうにかなるやん……なのです。
https://github.com/Kitware/CMake/blob/master/Modules/FindIconv.cmake
上記のファイルを/usr/share/cmake-3.10/Modules
に入れ、doxygenのソース一式にあるFindIconv.cmakeは使用されないように消すか変名します。
make
さてcmakeできたぞ、というところでmakeしますがまたコケました。
../lib/libdoxycfg.a(portable_c.c.o): In function `portable_iconv_open':
portable_c.c:(.text+0x1f): undefined reference to `libiconv_open'
../lib/libdoxycfg.a(portable_c.c.o): In function `portable_iconv':
portable_c.c:(.text+0x5c): undefined reference to `libiconv'
../lib/libdoxycfg.a(portable_c.c.o): In function `portable_iconv_close':
portable_c.c:(.text+0x76): undefined reference to `libiconv_close'
collect2: error: ld returned 1 exit status
src/CMakeFiles/doxygen.dir/build.make:99: recipe for target 'bin/doxygen' failed
自分で作ったlibiconvにこれらのシンボルは存在するので、libiconvが見つからないかリンクされないか……という状態のようです。
cmakeするときにiconvを無理やり見つけられるようにしたのが悪影響しているのかわかりませんが、もう力業で解決します。
- src/CMakeFiles/doxygen.dir/link.txt の
- 末尾に
-liconv
を書き足す - いま作業しているフォルダのlibフォルダにlibiconv.soを放り込んでおく
これをする理由はMakefileとかエラーログを見ていると何となくわかります。
これでコンパイルは完了です。
Dotのあれがないのでよくわかりませんが、とりあえずhtmlは無事作れるものを作れました。