翻译器(ecp)配置 在线文档

FastDo是一个强大的C++跨平台开发库,能助您快速的开发服务端程序,Web应用及网页。

翻译器(ecp)配置

ecp是将嵌有C++代码的动态文档翻译成C++源文件,并调用指定编译器编译成do文件的工具。它的配置文件是你的目录/fastdo/compiler/ecp.conf

Linux:

下面展示一个Linux版默认ecp.conf的关键内容

ElementDelims=<{ }>
BlockDelims=<? ?>
OutputElement=
IncludeElement=include
IncludeOnceElement=include-once
ImportElement=import
ImportSyntax=RSP.import("$DoFile");\n
NormalCodeBlock=cpp
DefineCodeBlock=def
ImplementCodeBlock=imp
OutputSyntax=std::cout << $Variable;\n
EmbedCodeAdditional=\n
StringEscapeType=slashes
StringEscapeChars=\n\r\t\v\a\\\'\"
#StringNewLineInNewSyntax="\\n"
StringOutputSyntax=std::cout << "$String";\n

SourceTpl=fastdo-gcc.cpp-tpl

OutputExt=.do

CC=g++

CFLAGS=-fexceptions -fPIC -O2 --std=c++0x

LFLAGS=-shared

LINK_LIB=-lfcgiplus -lwinux -leiendb -lsqlite3secure -leienml

PREFIX=/opt/fastdo

INC_PATH=-I$(PREFIX)/include/fcgiplus -I$(PREFIX)/include/winux -I$(PREFIX)/include/eiendb -I$(PREFIX)/include/eienml -I$(PREFIX)/include/fcgi

LIB_PATH=-L$(PREFIX)/lib/libfcgi -L$(PREFIX)/lib/libfastdo

CCMD=$(CC) $(CFLAGS) -o $Output $SourceFile $(LFLAGS) $(LINK_LIB) $(INC_PATH) $(LIB_PATH)

PREFIX为前面你安装时修改的。一般情况下,只用这么修改就成了。


Windows:

下面展示一个Windows版默认ecp.conf的关键内容

ElementDelims=<{ }>
BlockDelims=<? ?>
OutputElement=
IncludeElement=include
IncludeOnceElement=include-once
ImportElement=import
ImportSyntax=RSP.import("$DoFile");\n
NormalCodeBlock=cpp
DefineCodeBlock=def
ImplementCodeBlock=imp
OutputSyntax=std::cout << $Variable;\n
EmbedCodeAdditional=\n
StringEscapeType=slashes
StringEscapeChars=\n\r\t\v\a\\\'\"
#StringNewLineInNewSyntax="\\n"
StringOutputSyntax=std::cout << "$String";\n

SourceTpl=fastdo-vc10.cpp-tpl

OutputExt=.do

VSToolsBat="D:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\Tools\\vsvars32.bat"

CC=cl.exe

ObjsDir=$OutputDirobjs

CFLAGS=/Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "SIMPLEPAGE_EXPORTS" /D "_CRT_SECURE_NO_WARNINGS" /D "_WINDLL" /D "_MBCS" /D "WINUX_DLL_USE" /D "EIENML_DLL_USE" /D "EIENDB_DLL_USE" /D "FCGIPLUS_DLL_USE" /D "HTTPWRAPPER_DLL_USE" /Gm- /EHsc /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fa"$(ObjsDir)/" /Fo"$(ObjsDir)/" /Fd"$(ObjsDir)/vc100.pdb" /Gd /analyze- /errorReport:queue /MD /LD

LFLAGS=/MANIFEST /ManifestFile:"page.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /INCREMENTAL:NO /NOLOGO /DLL /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE

PREFIX=F:\\Projects\\fastdo

LINK_LIB=winux.lib fcgiplus.lib libfcgi.lib eiendb.lib sqlite3secure.lib eienml.lib

INC_PATH=/I "$(PREFIX)\\include\\fcgiplus" /I "$(PREFIX)\\include\\fcgi-win" /I "$(PREFIX)\\include\\winux" /I "$(PREFIX)\\include\\eiendb" /I "$(PREFIX)\\include\\eienml"

LIB_PATH=/LIBPATH:"$(PREFIX)\\lib"

CCMD="$(VSToolsBat) && $(CC) $SourceFile $(CFLAGS) $(INC_PATH) /link /OUT:"$Output" $(LIB_PATH) $(LINK_LIB)"\nif not exist $(ObjsDir)\\nul mkdir $(ObjsDir)\nif exist $OutputDir*.pdb move $OutputDir*.pdb $(ObjsDir)\nif exist *.lib move *.lib $(ObjsDir)\nif exist *.exp move *.exp $(ObjsDir)

PREFIXVSToolsBat为前面你安装时修改的。(注意,配置文件中\要写成\\。)

红色部分必须修改成你自己的路径。

假设你想增加其他的C/C++第三方库,该怎么办呢?只需要进行3步:

1. 往INC_PATH增加头文件路径,参考上面内容。

2. 往LIB_PATH增加库文件路径,可以是动态库或静态库,参考上面内容。

3. 往LINK_LIB增加链接的库名,参考上面内容。


其实ecp的功能远远不止这样,它甚至能将嵌有任意语言代码的文档翻译成该种语言的源代码,并能调用一个命令。它的语法标记以及翻译规则都可以自定义。鉴于篇幅原因,以后再作介绍。