vs2008 libevent 编译 支持openssl

时间:2022-09-13 00:17:55

1、下载libevent源码 http://libevent.org/

2、更改Makefile.nmake,使其能够支持openssl

# WATCH OUT!  This makefile is a work in progress.             -*- makefile -*-
#
# I'm not very knowledgeable about MSVC and nmake beyond their most basic
# aspects.  If anything here looks wrong to you, please let me know.


# If OPENSSL_DIR is not set, builds without OpenSSL support.  If you want
# OpenSSL support, you can set the OPENSSL_DIR variable to where you
# installed OpenSSL.  This can be done in the environment:
#   set OPENSSL_DIR=c:\openssl
# Or on the nmake command line:
#   nmake OPENSSL_DIR=C:\openssl -f Makefile.nmake
# Or by uncommenting the following line here in the makefile...


# OPENSSL_DIR=c:\openssl


!IFDEF OPENSSL_DIR
SSL_CFLAGS=/I$(OPENSSL_DIR)\include /DEVENT__HAVE_OPENSSL
!ELSE
SSL_CFLAGS=
!ENDIF


# Needed for correctness
CFLAGS=/IWIN32-Code /IWIN32-Code/nmake /Iinclude /Icompat /DWIN32 /DHAVE_CONFIG_H /I. $(SSL_CFLAGS)


# For optimization and warnings
CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo


# XXXX have a debug mode


LIBFLAGS=/nologo


CORE_OBJS=event.obj buffer.obj bufferevent.obj bufferevent_sock.obj \
bufferevent_pair.obj listener.obj evmap.obj log.obj evutil.obj \
strlcpy.obj signal.obj bufferevent_filter.obj evthread.obj \
bufferevent_ratelim.obj evutil_rand.obj
WIN_OBJS=win32select.obj evthread_win32.obj buffer_iocp.obj \
event_iocp.obj bufferevent_async.obj
EXTRA_OBJS=event_tagging.obj http.obj evdns.obj evrpc.obj


!IFDEF OPENSSL_DIR
SSL_OBJS=bufferevent_openssl.obj
SSL_LIBS=libevent_openssl.lib
!ELSE
SSL_OBJS=
SSL_LIBS=
!ENDIF


ALL_OBJS=$(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS) $(SSL_OBJS)
STATIC_LIBS=libevent_core.lib libevent_extras.lib libevent.lib $(SSL_LIBS)




all: static_libs tests


static_libs: $(STATIC_LIBS)


libevent_core.lib: $(CORE_OBJS) $(WIN_OBJS)
lib $(LIBFLAGS) $(CORE_OBJS) $(WIN_OBJS) /out:libevent_core.lib 


libevent_extras.lib: $(EXTRA_OBJS)
lib $(LIBFLAGS) $(EXTRA_OBJS) /out:libevent_extras.lib


libevent.lib: $(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS)
lib $(LIBFLAGS) $(CORE_OBJS) $(EXTRA_OBJS) $(WIN_OBJS) /out:libevent.lib


libevent_openssl.lib: $(SSL_OBJS)
lib $(LIBFLAGS) $(SSL_OBJS) /out:libevent_openssl.lib


clean:
del $(ALL_OBJS)
del $(STATIC_LIBS)
cd test
$(MAKE) /F Makefile.nmake clean
cd ..


tests:
cd test
!IFDEF OPENSSL_DIR
$(MAKE) OPENSSL_DIR=$(OPENSSL_DIR) /F Makefile.nmake
!ELSE
$(MAKE) /F Makefile.nmake
!ENDIF
cd ..

3、使用vs 2008 命令提示工具,首先>cd C:\libevent-2.0.22-stable

使libevent成为当前目录

然后>nmake OPENSSL_DIR=C:\usr\local\ssl -f Makefile.nmake

OPENSSL_DIR为openssl的安装目录

编译结果为4个静态链接库

libevent.lib

libevent_core.lib

libevent_extras.lib

libevent_openssl.lib