【问题标题】:Visual Studio 2013 Project with Multiple Property Sheets具有多个属性表的 Visual Studio 2013 项目
【发布时间】:2016-01-19 00:06:37
【问题描述】:

我正在使用 Windows 10 上的 Visual Studio 2013 开发一个项目。基本上我正在使用 C++ 编写一些 MEX 文件,并且我正在使用一些我经常使用的库:OpenCV 和 MATLAB 的外部库。对于每个库,我都保存了包含所有必要信息的属性表(.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)\extern\include</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>

【问题讨论】:

  • 您的属性表具有相同设置的竞争条目。可以在每个属性表中设置某些属性(例如附加库引用),而其他属性(例如字符集)则不能。仅指定特定于各个库的属性。
  • @IInspectable:谢谢!这就说得通了。我已将道具表添加到问题中。您能否快速浏览一下并告诉我哪些领域正在竞争(它们都很短)?在每种情况下,它只是设置了额外的库引用
  • 嗯,显然&lt;AdditionalIncludeDirectories&gt; 在文件之间竞争,但我怎样才能避免这种情况呢?
  • 未来的读者可能会发现这是一个有用的模板:github.com/chappjc/MATLAB/blob/master/propertySheets/…

标签: c++ visual-studio visual-studio-2013


【解决方案1】:

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

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

<AdditionalIncludeDirectories>$(MATLAB_DIR)\extern\include</AdditionalIncludeDirectories>

<AdditionalIncludeDirectories>$(MATLAB_DIR)\extern\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

&lt;AdditionalLibraryDirectories&gt; 属性应用相同的更改; &lt;AdditionalDependencies&gt; 已经正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2010-10-13
    • 1970-01-01
    • 2011-03-30
    相关资源
    最近更新 更多