Scintilla 3.2.5在VC中的编译(动态、静态)
Scintilla是一个开源的源代码编辑组件。
1. 下载Scintilla源代码(http://www.scintilla.org/ScintillaDownload.html)
本文使用3.2.5版本
2.编译动态链接库 SciLexer.dll
使用 “打开 Visual Studio 20** 命令提示”菜单,进入 VC 的命令行编译环境。
根据 Readme, 进入 scintilla\win32 目录
VC6 运行 nmake -f scintilla_vc6.mak
VC2008 2010 运行 nmake -f scintilla.mak
VC2002 2003 2005运行 nmake -f scintilla.mak (需将 scintilla.mak中的 -MP 编译设置去除)
这样将在 scintilla\bin 中得到 编译好的动态链接库SciLexer.dll 和 Scintilla.dll。
3. 编译静态链接库 ScintillaLib.lib
第一种方法: 参照 Scintilla 3.24在MFC中的使用(动态、静态)
1.创建一个静态库工程,名称为:ScintillaLib。
2.将scintilla源代码文件夹放到工程目录下,将lexers、lexlib、src、win32目录下的文件添加到工程。
3.工程属性,C/C++→General→Additional Include Directories填入.\scintilla\include;.\scintilla\lexlib;.\scintilla\src
C/C++→Preprocessor→Preprocessor Definitions填入STATIC_BUILD;SCI_LEXER
4.注释掉CheckD2D.cxx文件里面的内容。
5.编译完成。
第二种方法:仍然使用 makefile 文件,命令行编译
修改scintilla.mak ,并另存为 scintilla_lib.mak
在 LEXLIB=Lexers.lib 之后增加
SCINTILLALIB = $(DIR_BIN)\ScintillaLib
修改
CXXFLAGS=-Zi -TP -MP -W4 -EHsc -Zc:forScope -Zc:wchar_t-D_CRT_SECURE_NO_DEPRECATE=1
为
CXXFLAGS=-TP -W3 -EHsc -DWIN32 -D_LIB
修改
CXXNDEBUG=-O1 -MT -DNDEBUG -GL
为
CXXNDEBUG=-O1 -MT -DNDEBUG
添加
!IFDEF DEBUG
CXXFLAGS=$(CXXFLAGS) $(CXXDEBUG)
LDFLAGS=$(LDDEBUG) $(LDFLAGS)
SCINTILLALIB =$(SCINTILLALIB)d.lib
!ELSE
CXXFLAGS=$(CXXFLAGS) $(CXXNDEBUG)
SCINTILLALIB =$(SCINTILLALIB).lib
!ENDIF
修改
ALL: $(COMPONENT) $(LEXCOMPONENT)$(LEXLIB) $(DIR_O)\ScintillaWinS.obj
为
ALL: $(SCINTILLALIB)
在
$(LEXLIB): $(LEXOBJS)
LIB /OUT:$@ $(LEXOBJS)
之后增加
$(SCINTILLALIB): $(LOBJS) $(DIR_O)\ScintRes.res
$(LD) /lib/OUT:$@ $**
运行 nmake -f scintilla_lib.mak 编译得到 ScintillaLib