非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) 编译
从官网下载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源码的筒子们,呵呵)
阅读全文
0 0
- 非nmake方式Visual Studio C++ 2010 编译libevent
- nmake、cmake、Visual Studio编译libevent
- nmake、cmake、Visual Studio编译zlib
- Visual Studio Makefile 方式编译
- 用 Visual Studio 2013 编译 libevent-2.0.22-stable
- Visual Studio 2012 编译C
- Visual Studio 2005下编译php-5.3.8+pecl-libevent-0.0.4+libevent-2.0.15-stable
- win7+vs2015 nmake编译libevent-2.1.8-stable
- 在Visual Studio 2010下编译C语言程序
- Visual Studio 2013 编译C程序
- Visual Studio Code C&&C++ 编译配置
- Visual Studio 2010编译选项
- Visual Studio 2010编译openssl
- visual studio 2010编译漏洞
- 非cmake方式Visual C++ 2010编译mysql-connector-C++静态库
- Android 非NDK方式编译C文件
- visual studio编译器用cmd编译运行.c文件
- [转]用makefile脚本方式调用vs 2010 的nmake来编译工程的实例
- null不可以toString
- Android开发:最全面、最易懂的Android屏幕适配解决方案
- 【JavaSE_学习笔记】File类
- 原生Android开发—Jar包生成
- CentOS下MySQL忘记root密码解决方法【转载】
- 非nmake方式Visual Studio C++ 2010 编译libevent
- 初学机器学习的你,是否掌握了这样的Linux技巧?
- Spring Redis Cache @Cacheable 大并发下返回null
- pandas.Series.quantile
- PAT考试乙级1037(C语言实现)
- CF——Codeforces 891 C Envy
- 利用tensorflow训练简单的DNN
- 算法练习-1、放苹果(分治算法)
- phantomJS+nodeJS+nginx完美解决前后端分离SEO问题