VS2017使用项目管理编译Nginx与RTMP Module

本项目已开源,地址:https://github.com/Car-eye-team/Car-eye-RTMP-server/tree/master/source/nginx_windows

继昨天利用VS的命令工具nmake工具将nginx编译通过后就心思如何利用VS项目对nginx进行管理编译,网上资料不多,自己摸索吧,没想到不是很难,记录一下。

使用VS2017创建一个空的Console项目,将里面代码清空,然后创建如下几个目录:

注意一点的是src目录下的mail,misc,stream目录下的代码就不要导入了,根据Makefile里面描述是用不到的;

然后根据这几个目录进行代码导入,generate目录对应的configure生成的build目录;

接下来进行项目配置,重点!~

无图无真相,多图:

常规里面字符集要设置为多字节字符集,不能用Unicode。

C/C++常规选项设置附加包含目录:

增加如下头文件目录:

$(SolutionDir)/generate

$(SolutionDir)/../zlib

$(SolutionDir)/include

$(SolutionDir)/../pcre

$(SolutionDir)/src/core

$(SolutionDir)/src/event

$(SolutionDir)/src/event/modules

$(SolutionDir)/src/http

$(SolutionDir)/src/http/modules

$(SolutionDir)/src/os/win32

$(SolutionDir)/build

$(SolutionDir)/../nginx-rtmp-module

就是项目管理中头文件的那几个目录,非nginx项目的库引用及附加模块路径要根据自己项目情况来定~!

代码生成项,运行库要选择/Mtd,Release模式可选择/MT模式;

语言->符合模式要选择“否”;

预编译头要选择不使用预编译头,因为不是VC++项目;

高级要编译为C代码(/TC);

链接器设置,常规附加库目录:

$(SolutionDir)/libs/openssl

$(SolutionDir)/../pcre

$(SolutionDir)/../zlib

根据自己的静态库存放目录来定义,openssl是已经编译好的,确保对应目录下都有对应的.lib库;

输入项需要添加支持库:

ws2_32.lib
legacy_stdio_definitions.lib
pcre.lib
libcrypto32MTd.lib
libssl32MTd.lib
crypt32.lib

zlib.lib

库的顺序最好不要打乱,libcrypto32MTd.lib libssl32MTd.lib是openssl的静态库,根据设置选择MTd.lib或者MT.lib;

pcre.lib跟zlib.lib是对应pcre zlib项目的库;

项目的设置到这里就完成了,先别忙着编译,上一篇提到的__iob_func这个函数又出来作怪了,如果不改的话会提示__iob_func重复定义了,将__iob_func这个函数的定义放到build目录的ngx_pch.c文件中,然后在ngx_auto_config.h文件中只做声明即可;

这时就可以编译了,但前面说了Makefile里面并不是将所有文件都进行编译的,所以你必然会导入多了,那么就有两个方法:

1、你写一个脚本文件,根据Makefile里面需要的文件导入到VS项目对应目录里;

2、你根据我创建的目录格式导入对应目录下的代码,然后编译,等报错的时候查看对应报错的文件是否包含在Makefile文件里,不在就移除到工程外;

不论何种方法,到最后基本就可以编译通过了,有些细节可能记不住了,有一点是这样编译出来的程序是没有图标的。。。



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值