VS2017通过props文件配置项目的依赖

Visual Studio .props文件简介

https://zhuanlan.zhihu.com/p/343036658目录 一、 为什么需要.props文件? 二、通过Visual Studio生成.props配置文件1. 启动【属性管理器】 2. 创建新的项目属性表 3. 编辑项目属性表当中的属性 三、导入.props配置文件 四、通过文本编辑器“调教”一下p…https://zhuanlan.zhihu.com/p/343036658

其他的配置参考如下:

VS2017通过props文件配置opencv环境_输出文件“qtvars_win32_release.props”不存在_GEO-LIKE的博客-CSDN博客文章目录0 简述适用于win32和x64平台Debug和Release的单文件配置方法用户定义的宏UserMacros1. 配置过程将opencv相关dll添加到系统环境变量中新建.props配置文件在vs项目中引用CV_x64.props属性文件0 简述编译好的opencv库分为Debug(opencv_world400d.lib)和Release(opencv_world400.lib),..._输出文件“qtvars_win32_release.props”不存在https://blog.csdn.net/u010963435/article/details/84855901

编译好的opencv库(见32位和64位opencv编译)分为Debug(opencv_world400d.lib)和Release (opencv_world400.lib),Debug版本包含一些调试信息,Release版本做了一些性能优化。想要让项目在Debug和Release阶段引用不同的opencv库,需要针对平台和配置,在vs中建立多个配置文件(以64位平台为例,需要为Debug和Release建立两个不同的文件)。配置过程比较繁琐,且配置文件可复用性也不强。因此,一个易维护,自动化程度高的配置文件能够带来很大的便捷性。本文依靠vs属性配置文件的条件判断($(Configuration)|$(Platform))和用户定义的宏(UserMacros)来实现维护和环境配置。
适用于win32和x64平台Debug和Release的单文件配置方法

通过编辑.props属性文件,使用标签条件选择器实现对不同编译环境的判断,实现一个文件配置win32和64位平台的环境。

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"/>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"/>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"/>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"/>

    1
    2
    3
    4

用户定义的宏UserMacros

通过UserMacros,可以将opencv的多个路径放在属性文件的UserMarcos标签之中,便于修改和维护。

<PropertyGroup Label="UserMacros">
    <OPENCV_INCLUDE>D:\build\opencv400_64\install\include;D:\build\opencv400_64\install\include\opencv2;</OPENCV_INCLUDE>
    <OPENCV_LIBRARY_DIR>D:\build\opencv400_64\install\x64\vc15\lib</OPENCV_LIBRARY_DIR>
    <OPENCV_LIBRARY_DEBUG>opencv_world400d.lib</OPENCV_LIBRARY_DEBUG>
    <OPENCV_LIBRARY_RELEASE>opencv_world400.lib</OPENCV_LIBRARY_RELEASE>
</PropertyGroup>

在属性文件后文中需要用到的地方只需要计算这些宏的值即可

<IncludePath>$(OPENCV_INCLUDE);$(IncludePath)</IncludePath>
<LibraryPath>$(OPENCV_LIBRARY_DIR);$(LibraryPath)</LibraryPath>

1. 配置过程

说明:同时编译了32位和64位的opencv,但是由于命名冲突,会造成混淆,是不可能同时使用这两个版本的库,或者同时加入到环境变量中。本文只针对64位的opencv库进行说明,32位配置方法一致。
将opencv相关dll添加到系统环境变量中

    打开编辑系统环境变量
    在系统环境变量中点击新建,
    名称为OPENCV_PATH,值为D:\build\opencv400_64\install\x64\vc15\bin

    找到名为Path的变量,编辑 -> 新建,写上%OPENCV_PATH%。

如果编译opencv的过程中使用了GDAL和QT还应该将GDAL和QT的bin路径加入到环境变量中。
新建.props配置文件

    打开属性管理器,在vs菜单中 视图 -> 属性管理器
    右键单击项目名->新建项目属性文件,选择属性文件.props名称命名为CV_x64。存储路径选择一个合适的位置,放到项目之外,方便在其他用到opencv的项目引用。
    关闭VS,使用支持XML的文本编辑器打开新建的CV_x64.props属性文件,将下列代码插入。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros">
    <OPENCV_INCLUDE>D:\build\opencv400_64\install\include;D:\build\opencv400_64\install\include\opencv2;</OPENCV_INCLUDE>
    <OPENCV_LIBRARY_DIR>D:\build\opencv400_64\install\x64\vc15\lib</OPENCV_LIBRARY_DIR>
    <OPENCV_LIBRARY_DEBUG>opencv_world400d.lib</OPENCV_LIBRARY_DEBUG>
    <OPENCV_LIBRARY_RELEASE>opencv_world400.lib</OPENCV_LIBRARY_RELEASE>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <IncludePath>$(OPENCV_INCLUDE);$(IncludePath)</IncludePath>
    <LibraryPath>$(OPENCV_LIBRARY_DIR);$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <IncludePath>$(OPENCV_INCLUDE);$(IncludePath)</IncludePath>
    <LibraryPath>$(OPENCV_LIBRARY_DIR);$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <Link>
      <AdditionalDependencies>$(OPENCV_LIBRARY_DEBUG);%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RELEASE|x64'">
    <Link>
      <AdditionalDependencies>$(OPENCV_LIBRARY_RELEASE);%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <BuildMacro Include="OPENCV_INCLUDE">
      <Value>$(OPENCV_INCLUDE)</Value>
    </BuildMacro>
    <BuildMacro Include="OPENCV_LIBRARY_DIR">
      <Value>$(OPENCV_LIBRARY_DIR)</Value>
    </BuildMacro>
    <BuildMacro Include="OPENCV_LIBRARY_DEBUG">
      <Value>$(OPENCV_LIBRARY_DEBUG)</Value>
    </BuildMacro>
    <BuildMacro Include="OPENCV_LIBRARY_RELEASE">
      <Value>$(OPENCV_LIBRARY_RELEASE)</Value>
  </ItemGroup>
</Project>

在vs项目中引用CV_x64.props属性文件

    已有的项目,可以通过编辑属性文件Your_Project_Name.vcxproj引用。
    使用支持xml的文本编辑器打开vcxproj文件,找到类似下面代码的部分。这里可以看到使用有4个部分,对应了vs属性管理器中的四个文件夹:

    Debug|Win32
    Debug|x64
    Release|Win32
    Release|x64
    将编辑好的属性文件的相对路径(…\…\CV_x64.props")加入对应的部分即可。下面的代码中,配置文件放在了64位平台上Debug和Release的部分。

  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

    <Import Project="..\..\CV_x64.props" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
    <Import Project="..\..\CV_x64.props" />
  </ImportGroup>

   

    或者打开VS之后通过属性管理器在需要的平台和模式的文件夹上右键单击,添加已有文件。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱水的鱼1101

10个C币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值