具有多个属性表的 Visual Studio 2013 项目

Visual Studio 2013 Project with Multiple Property Sheets

本文关键字:Visual Studio 2013 项目 属性      更新时间:2023-10-16

我正在Windows 10上使用Visual Studio 2013进行一个项目。基本上,我使用C++编写了一些MEX文件,并且使用了一些我经常使用的库:OpenCV和MATLAB的extern库。对于每个库,我都保存了包含所有必要信息的属性表(.props 文件)。它的要点是我正在尝试将我的opencv.props文件和matlab.props文件添加到项目中。

当我尝试将多个属性表添加到"属性管理器"中的属性配置时,出现了我当前的问题。对于每个,我单击"添加现有属性表",瞧!我应该得到正确的设置。当我只使用一个属性表时,一切正常。当我尝试添加多个工作表时,似乎只有最近添加的工作表正在注册。

知道我哪里出错了吗?

我已经粘贴了下面 .props 文件的内容,因为它们都非常简短和简单:

matlab.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" />
  <PropertyGroup />
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>$(MATLAB_DIR)externinclude</AdditionalIncludeDirectories>
    </ClCompile>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>

opencv.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" />
  <PropertyGroup>
    <_PropertySheetDisplayName>OpenCV_debug</_PropertySheetDisplayName>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>$(OPENCV_DIR)....include</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <AdditionalLibraryDirectories>$(OPENCV_DIR)lib</AdditionalLibraryDirectories>
      <AdditionalDependencies>opencv_calib3d$(OPENCV_VERSION)d.lib;opencv_contrib$(OPENCV_VERSION)d.lib;opencv_core$(OPENCV_VERSION)d.lib;opencv_features2d$(OPENCV_VERSION)d.lib;opencv_flann$(OPENCV_VERSION)d.lib;opencv_gpu$(OPENCV_VERSION)d.lib;opencv_highgui$(OPENCV_VERSION)d.lib;opencv_imgproc$(OPENCV_VERSION)d.lib;opencv_legacy$(OPENCV_VERSION)d.lib;opencv_ml$(OPENCV_VERSION)d.lib;opencv_nonfree$(OPENCV_VERSION)d.lib;opencv_objdetect$(OPENCV_VERSION)d.lib;opencv_ocl$(OPENCV_VERSION)d.lib;opencv_photo$(OPENCV_VERSION)d.lib;opencv_stitching$(OPENCV_VERSION)d.lib;opencv_superres$(OPENCV_VERSION)d.lib;opencv_ts$(OPENCV_VERSION)d.lib;opencv_video$(OPENCV_VERSION)d.lib;opencv_videostab$(OPENCV_VERSION)d.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>

通常,属性表中的属性会覆盖以前设置的属性。若要保留以前的设置,必须显式添加它们(使用 %( 宏语法)。

例如,在你的opencv.props文件中,你需要替换

<AdditionalIncludeDirectories>$(MATLAB_DIR)externinclude</AdditionalIncludeDirectories>

<AdditionalIncludeDirectories>$(MATLAB_DIR)externinclude;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

<AdditionalLibraryDirectories> 属性应用相同的更改;<AdditionalDependencies>已正确。