您的位置:首页 > 其它

windows平台手动编译pcre

2013-01-16 10:59 399 查看
将 config.h.generic 重命名为 config.h

设置其中的 HAVE_BCOPY 参数为 0 (因为windows平台无bcopy()函数)

重命名 pcre.h.generic 为 pcre.h.

重命名 pcre_chartables.c.dist 为 pcre_chartables.c.

编译 dftables.c 成可执行文件,要加入参数 -DHAVE_CONFIG_H,以便导入 config.h 文件中的设置

/* 重命名 pcre_chartables.c.dist 为 pcre_chartables.c */

运行编译的可执行文件 dftables.exe ,参数为 pcre_chartables.c

即 dftables.exe pcre_chartables.c

新建工程,包含下列文件,编译成lib文件即可

pcre_internal.h

ucp.h

ucpinternal.h

ucptable.h

pcre_chartables.c

pcre_compile.c

pcre_config.c

pcre_dfa_exec.c

pcre_exec.c

pcre_fullinfo.c

pcre_get.c

pcre_globals.c

pcre_info.c

pcre_maketables.c

pcre_newline.c

pcre_ord2utf8.c

pcre_refcount.c

pcre_study.c

pcre_tables.c

pcre_try_flipped.c

pcre_ucp_searchfuncs.c

pcre_valid_utf8.c

pcre_version.c

pcre_xclass.c

这样就可以生成 libpcre.a 文件了 (vc,bcc生成的是pcre.lib,大同小异)

2、使用生成的 libpcre.a (静态链接库)

在你的程序中添加:

#define PCRE_STATIC // 开启静态链接库支持(一定要添加该行,否则无法使用静态链接库)

#include "pcre.h" // PCRE头文件

并且添加 libpcre.a 到工程中,然后就可以在程序中使用PCRE函数了:)

编译选项 添加 /MT ,无头文件预编译.

3、使用生成的 libpcre-0.dll 和 libpcre.dll.a (动态链接库)

在你的程序中添加:

#include "pcre.h" // PCRE头文件

并且添加 libpcre.dll.a 到工程中,然后就可以在程序中使用PCRE函数了:)

================================================================================

命令行下的批处理解决方法 .如果已经下载,可以不用第一行.

goto START

首先确保控制台环境中有:

1、VC6命令行编译环境

2、wget.exe、unzip.exe、sed.exe、mv.exe

然后执行这个批处理文件,就可以得到VC版本的pcr.lib。

:START

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.zip
unzip pcre-7.7.zip

cd pcre-7.7

sed -e "s/#define HAVE_BCOPY 1/#define HAVE_BCOPY 0/g" config.h.generic > config.h

mv pcre.h.generic pcre.h

mv pcre_chartables.c.dist pcre_chartables.c

cl -MD -DHAVE_CONFIG_H dftables.c

dftables.exe pcre_chartables.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_chartables.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_compile.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_config.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_dfa_exec.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_exec.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_fullinfo.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_get.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_globals.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_info.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_maketables.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_newline.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_ord2utf8.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_refcount.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_study.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_tables.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_try_flipped.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_ucp_searchfuncs.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_valid_utf8.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_version.c

cl -O1 -MD -DHAVE_CONFIG_H -c pcre_xclass.c

lib -out:libpcr.lib pcre_chartables.obj pcre_compile.obj pcre_config.obj pcre_dfa_exec.obj pcre_exec.obj pcre_fullinfo.obj pcre_get.obj pcre_globals.obj pcre_info.obj pcre_maketables.obj pcre_newline.obj pcre_ord2utf8.obj pcre_refcount.obj pcre_study.obj pcre_tables.obj
pcre_try_flipped.obj pcre_ucp_searchfuncs.obj pcre_valid_utf8.obj pcre_version.obj pcre_xclass.obj

这样就出来了: pcre.h + libpcr.lib

==============================================================================

最近使用VC编译了一下她的源代码,其实步骤很简单, 如下

1 一些源文件改名

config.h.generic 改名为 config.h (注意里面的配置)

pcre.h.generic 改名为 pcre.h

pcre_chartables.c.dist 改名为 pcre_chartables.c

2 建立VC工程

建立一个VC的DLL工程,去掉原有的包含文件

将PCRE的所有pcre_*.c都加进去, pcre后面没有_的不要加, 后缀名是.cc的不要加

可以参考上面的.还有.h 文件也是要的.

3 修改工程设置

增加工程预编译宏 HAVE_CONFIG_H

不使用预编译头 Not Using Precompiled Headers

编译选项 添加 /MT

OK 完成以上三步,就可以在 VC 上编译通过了。

4 编译结果

使用时只需要编译出来的 .DLL .Lib 和 源代码目录的 pcre.h
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: