实战Windows下编译Opencc 1.0.5

Opencc是中文简繁转换开源项目,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港)。

特点

严格区分「一简对多繁」和「一简对多异」。
完全兼容异体字,可以实现动态替换。
严格审校一简对多繁词条,原则为「能分则不合」。
支持中国大陆、台湾、香港异体字和地区习惯用词转换,如「里」「里」、「鼠标」「滑鼠」。
词库和函数库完全分离,可以自由修改、导入、扩展。
支持C、C++、Python、PHP、Java、Ruby、Node.js and Android。
兼容Windows、Linux、Mac平台。

***  ***  ***
运行环境:Win10

编译工具:TDM-GCC/VS2017
***  ***  ***
Opencc提供的windows程序是最早的1.0.1,网上有别人编译1.0.4,没有运行起来,而且体积庞大,因此想自己编译一个,在此记录一下。
一、首先下载源码包

git clone https://github.com/BYVoid/OpenCC.git
cd OpenCC
目录中有CMakeLists.txt文件,需要去下载CMake
二、编译器选择
直接使用Make命令,提示错误,看来需要重新编写Makefile文件。
windows下编译C++程序,不想安装庞大的VS,所以首先想到的是MinGW,但也是有不少错误,最后选定TDM-GCC成功。

cmake -H. -Bbuild -G "MinGW Makefiles"
运行上面命令可以重新生成Makefile文件,会在目录新建build文件。

打开CMake-gui,指定到编译目录,可以编辑Makefile文件,以下参数需要修改,在此编译最小运行版本,指定为MINSIZEREL。

CMAKE_BUILD_TYPE = MINSIZEREL
CMAKE_CXX_FLAGS = -static -s -pipe
CMAKE_CXX_FLAGS_MINSIZEREL = -Os -fno-rtti -fnothrow-opt -fno-threadsafe-statics -fnothrow-opt -Wall -fmessage-length=0 -DNDEBUG
保存时无错误,便可运行下列命令进行编译。

cmake --build build --config MINSIZEREL
解决了一些程序代码的错误,编译出来的文件大小吓死人,因此放弃其他编译器,老老实实使用VS吧。
考虑到体积,win10下我安装VS2015,竟然没有任何反应,所以下载vs2017_BuildTools,安装好必要的工具后体积10G,真是欲哭无泪……
为了保障低版本运行库的支持,我选定VS2015的编译工具,在安装需要注意。

三、使用VS BuildTools 2017编译
在此之前需要进行下列修改:
1. CMakeList.txt 里的变量修改,有多处需要修改
删除对于常量的引用,比如"${CMAKE_CXX_FLAGS}"改为CMAKE_CXX_FLAGS;
2. 转换x:\OpenCC\src\PhraseExtract.cpp为Unicode格式;
3. 转换x:\OpenCC\data\dictionary\所有字典文件为utf-8+格式
在网上查了一下,c++处理utf8有些困难???不解……
4. 下载最新版rapidjson覆盖
git clone https://github.com/Tencent/rapidjson.git
x:\rapidjson-1.1.0\include\rapidjson\ 所有文件复制到 x:\OpenCC\deps\rapidjson-0.11\
0.11版本太旧,有许多不能支持VC2015的格式,所以需要更新一下。
5. 修改x:\OpenCC\src\UTF8StringSlice.hpp,加入标头
#pragma once
做好上述准备后,运行下列命令,重新生成Makefile文件:
cmake -H. -Bbuild -G"Visual Studio 15" -DCMAKE_INSTALL_PREFIX="c:/opencc"
64位程序使用下列命令:
cmake -H. -Bbuild -G"Visual Studio 15 Win64" -DCMAKE_INSTALL_PREFIX="c:/opencc"
打开Cmake-gui,修改:
CMAKE_BUILD_TYPE = Debug;Release;MinSizeRel;RelWithDebInfo
CMAKE_CXX_FLAGS = /DWIN32 /D_WINDOWS /W0 /GR /EHsc /D_CRT_SECURE_NO_WARNINGS
CMAKE_CXX_FLAGS_RELEASE = /MD /O2 /Ob2 /DNDEBUG
保存无错误后,运行:
cmake --build build --config Release
主运行程序位于build/release目录下,生成的字典在data目录下,当然还有配置文件。


四、总结
windows下编译C++程序,最好的还是VS,其他编译器生成的文件都大的怕人;
opencc本身基于cmake写好编译配置,比较方便,但更新较早,对VS高版本支持不好,需手工修改;
编译64位时,出现Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.12.25827\include\setjmp.h 165行的longjmp错误!!!这个真不知道是什么鬼,我是删除掉那儿的几行代码编译成功的。

附编译好的程序:
OpenCC-1.0.5-Win32

阅读更多
文章标签: opencc
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭