非nmake方式Visual Studio C++ 2010 编译libevent

来源:互联网 发布:淘宝产品摄影报价 编辑:程序博客网 时间:2024/06/05 17:27
1. 下载源代码
   从官网下载libevent源代码


2. 配置vcxproj工程


(1) 查看Makefile.nmake的配置


将源代码解压,打开Makefile.nmake, 找到如下文字:


# [解释]: /I指示“头文件的路径”,/D指示“预处理宏”
# Needed for correctness
CFLAGS=/IWIN32-Code /IWIN32-Code/nmake /Iinclude /Icompat /DHAVE_CONFIG_H /I. $(SSL_CFLAGS)


# [解释]: 编译选项 (禁用4996警告等) 
# For optimization and warnings
CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo


# XXXX have a debug mode


LIBFLAGS=/nologo


# [解释]: 编译之后,.cpp文件对应产生的.obj文件
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 evutil_time.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


... ...


# [解释]: 连接时,连接libevent.lib时需要的.obj文件
libevent.lib: $(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS)
lib $(LIBFLAGS) $(CORE_OBJS) $(EXTRA_OBJS) $(WIN_OBJS) /out:libevent.lib


# [解释]: 
  如上所述,要编译输出libevent.lib文件,CORE_OBJS、WIN_OBJS和EXTRA_OBJS中的源文件都要添加到.vcxproj文件中。


(2) 配置.vcxproj工程
  新建library工程, 点开“解决方案资源管理器”,右击刚刚新建的工程,点击“添加”--> “现有项”,依次将CORE_OBJS、WIN_OBJS和EXTRA_OBJS列表中的.cpp文件添加到工程中。
  点开“解决方案资源管理器”,右击刚刚新建的工程,点击“属性”,点击“配置属性”--> C/C++,然后:
      点击“预处理器”,在“预处理器定义”中添加HAVE_CONFIG_H
  点击“常规”,按解压的源代码的目录,在“符加包含目录”中添加目录 d:\xxx\libevent2.1.8\WIN32-Code,d:\xxx\libevent2.1.8\WIN32-Code/nmake,d:\xxx\libevent2.1.8\incldue,d:\xxx\libevent2.1.8\compat


(3) 编译

  编译连接,输出自己编译的libevent2.1.8.lib文件,享用 ^_^ (PS: 这样做,符加的额外好处是可以单步调试,一路跟踪到libevent的源代码中,对于想学习libevent源码的筒子们,呵呵)