美文网首页
如何实现对Visual Studio 2010的库管理支持

如何实现对Visual Studio 2010的库管理支持

作者: 长不胖的Garfield | 来源:发表于2016-12-21 16:58 被阅读0次

    概述

    Vcpkg使用起来确实比较方便,基本上是免工程配置,但是现在只支持Visual Studio 2015及以上版本,那么,是否有可能支持Visual Studio 2010呢?或者说支持各种Visual Studio版本?

    局限从何而来

    之前讲过,Vcpkg能够整合到Visual Studio 2015上是因为有MSBuild扩展点可以导入配置,扩展点在:

    $(MSBUILDLOCATION)/Microsoft.Cpp/v4.0/V140/ImportBefore/Default/
    

    那么,如果能够找到Visual Studio 2010对应的MSBuild扩展点,就可以实现对应的库管理器。

    Visual Studio 2010的扩展点

    任意打开一个Visual Studio 2010的工程,在工程配置页签打开宏,输入custom,即可看到:

    扩展点

    也就是说,Visual Studio 2010的MSBuild也是支持扩展的,具体位置在:

    C:\Program Files (x86)\MSBuild\v4.0\
    

    MicrosoftCommonTargets之前和之后都可以插入对应的.Targets

    支持Visual Studio 2010库的方法

    1. Vcpkg的triplet可以修改为[x86/x64]-windows-[v100/v140]-static类似这种组合方式;
    2. portfile.cmake脚本中可以根据VCPKG_TOOLSET得到对应的Visual Studio版本,然后执行对应的构建流程;
    3. 在整合Visual Studio时,根据不同的版本写入调整不同的.targets文件来实现任何版本的库配置导入;
    4. 根据不同的toolset和platform合成不同的triplet,来保证库导入正确。

    延伸

    如果不需要全局库管理,仅仅是针对于对应的sln或者vcxproj,从上述扩展思路延伸来看,可以实现局部库管理:

    1. 根据约定统一存放依赖库的include、library和binary
    2. 编写librarys.targets文件来完成库导入
    3. 编写与sln和vcxproj同名的.targets文件
      使用$(MSBuildThisFileDirectory)获取当前路径来保证相对位置:
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <Target Name="Generate By pkgUser" AfterTargets="AfterBuild">
            <Message Text="*** author:liff.engineer@gmail.com ***" Importance="high"/>
        </Target>
        <Import Condition="Exists('$(MSBuildThisFileDirectory)..\..\config\librarys.targets')" Project="$(MSBuildThisFileDirectory)..\..\config\librarys.targets"/>
    </Project>
    
    1. 使用Visual Studio的扩展点导入.targets
      譬如,导入与sln路径下同名的库配置:
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Import Project="$(SolutionPath).targets" Condition="Exists('$(SolutionPath).targets')" />
    </Project>
    

    通过上述步骤即可完成面向解决方案的库管理及配置。

    相关文章

      网友评论

          本文标题:如何实现对Visual Studio 2010的库管理支持

          本文链接:https://www.haomeiwen.com/subject/ruvqvttx.html