当前位置:C++技术网 > 资讯 > 编译生成VS2010版libuv以及VS系列各种版本的libuv方法

编译生成VS2010版libuv以及VS系列各种版本的libuv方法

更新时间:2016-04-01 16:52:33浏览次数:1+次

    在文章《Libuv网络库源码下载和VS2015下libuv编译详细过程》我已经详细的说明了VS2015版编译libuv库的方法。当然附带了各种需要的工具和源码。不过因为编译的版本比较高,所以很可能你的电脑并没有安装VS2015。所以这里就告诉你如何去修改vcbuild.bat文件,从而实现编译不同的版本的libuv。
    不同版本的VS的编译器不一样,所以可能会出现一些小错误,只是编译器不支持那些语法规则罢了。你只需要简单分析,就能够解决。VS2010版就出现一个C语言的语法规范和C++语言规范不一致导致编译失败,修改源码后重新编译就解决了。
    将libuv源码文件夹下的vcbuild.bat用一个编辑器打开,可以使用VS、UE、Notepad++打开,不要使用记事本直接打开,因为格式看起来很乱,容易改错。如果bat文件右击后看不到打开方式,先将后缀改为txt,再用VS打开。

    打开后,找到下面这一段,如下图所示:

【自动识别已经安装的VS2015来编译libuv】

【自动识别已经安装的VS2015来编译libuv】
    自动识别的代码,显然是以VS2015为首选版本,所以默认情况下,就用VS2015编译生成看libuv的lib库。VS2015版的libuv库只能在VS2015使用,其他VS都无法使用,我测试过了。
    所以,你要编译你需要的VS版本,就改动这里的代码了。你可以将要编译的版本移到前面,其他的保持原样。当然,你也可以将非目标版本的VS的代码删掉,只留一个。比如我只想编译VS2010版的,所以我将其他的几个都删掉,只留下VS2010的。只留下下面这段即可:
:vc-set-2010
@rem Look for Visual Studio 2010
if not defined VS100COMNTOOLS goto vc-set-2008
if not exist "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2008
call "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
set GYP_MSVS_VERSION=2010
echo Using Visual Studio 2010
goto select-target

    注意,我说的是选择编译VS版本的这几段代码只留下VS2010版的,其他代码都不要动。

    然后就是libuv代码本身,看是否支持其他版本的VS了。反正我让他自动编译VS2010版本提示libuv代码有语法错误,如下图所示:

编译VS2010版的libuv出错

【编译VS2010版的libuv出错】

    不过,libuv的VS2010版的项目已经创建好了,如下图所示:

VS2010下编译libuv,VS2010打开libuv项目,双击uv.sln文件打开

【VS2010下编译libuv,VS2010打开libuv项目,双击uv.sln文件打开】

,我们启动项目,手动来解决libuv代码上的一些问题,然后来编译成功。

    我们用双击创建好的解决方案sln文件,就在libuv文件夹下。启动libuv项目后,如下图所示:

VS2010下编译libuv,在解决方案管理器中默认是libuv项目

【VS2010下编译libuv,在解决方案管理器中默认是libuv项目】

    我们重新编译libuv项目,然后发现确实有错误提示,见下图:

VS2010编译libuv报错

【VS2010编译libuv报错】
    对于这个错误的分析和解释以及解决方法,请阅读《VS2010编译libuv错误C2275(将此类型用作表达式非法)分析和解决方法》。
    修改了源代码,然后编译。good,编译通过,成功编译了VS2010版的libuv。如果你要正式使用,一定记得选择用Release版编译哦。然后将生成的libuv.lib文件和include文件夹的头文件复制到你的项目即可正常使用libuv了。
    基于本文的方法,你可以编译各种版本的libuv,包含VS2015版libuv、VS2013版libuv、VS2012版libuv、VS2010版libuv、VS2008版libuv,如果要编译VS2005版libuv或者VC6.0,你只需要按照这几个版本的代码稍作修改即可。我没有尝试,你可以试试。
    对了,你改了vcbuild.bat的内容之后,然后保存回去,文件名还是vcbuild.bat,如果你更改了文件名,那么在dos启动执行时记得用你更改后的文件来执行哦。