折腾了几个小时,终于编译成功了,和大家分享一下。
编译环境: Windows 7, Visual C++ 2008 Express Edition
1. 按照帮助文档的指导,把unxutils和环境变量设置好。
2. 找到.\winbuild\Doxygen.sln准备开始编译。
我先尝试的Visual C++ 2010 Express Edition,但是打开 .\winbuild\Doxygen.sln后,提示Doxygen的项目文件不能成功转换到新的格式; 看来我对 Visual C++ 2010 Express Edition 的 Backward compitability的期待过高;
然后我老老实实地按照Doxygen的作者推荐的, 安装了Visual C++ 2008 Express Edition, 打开.\winbuild\Doxygen.sln, 开始编译,得到错误如下:
Project : error PRJ0002 : Error result 1 returned from 'C:\Windows\SysWow64\cmd.exe'.
Google到了下面的解决方法:
http://sourceforge.net/mailarchive/message.php?msg_id=28422767
我的做法是:
(1)下载 gnuwin32的bison安装包,安装之.
http://downloads.sourceforge.net/gnuwin32/bison-2.4.1-setup.exe
(2) 把bison的路径(我的电脑上是 C:\tools\GnuWin32\bin)加到环境变量Path中(先于其它路径) 注意,要使VS找到新的bison,需要重新启动VS;
3. 再次尝试编译,得到新的错误如下:
4>c:\tools\doxygen-1.7.6.1.src\doxygen-1.7.6.1\src\translator_cn.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
4>c:\tools\doxygen-1.7.6.1.src\doxygen-1.7.6.1\src\translator_cn.h(109) : error C2001: newline in constant这些头文件都是为了一些国际化(把特定的字符串翻译为不同的国家的语言)。在 Notepad++ 中,看到translator_cn.h的格式是 "Encode in UTF-8 without BOM", 把它转换为"UTF-8"后, 该错误消失。
但是,translator_tw.h 又会报告类似的错误,考虑到台 湾同胞一衣带水,我把这个也转了一下encode,再次编译,发现又有新的错误来自translator_ua.h (乌克兰语)。不能忍了,找到了lang_cfg.h文件,把除了LANG_CN和LANG_TW的#define LANG_XX全部注释掉了。
然后,终于编译成功了。
分享一下,对有同样困扰的兄弟应该有点帮助。