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

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

我正在 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>

最佳答案

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

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

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

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

<AdditionalLibraryDirectories> 应用相同的更改属性(property); <AdditionalDependencies>已经是正确的了。

关于c++ - 具有多个属性表的 Visual Studio 2013 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34866369/

相关文章:

c++ - 使用 CreateWindowExW 时堆损坏

c++ - 如何在 C++ 中捕获粘贴事件

visual-studio - Visual Studio 2019-浏览器链接不起作用

c# - DbCommand 的自定义可视化工具

c++ - 如何在 Visual Studio 2013 中启用 CUDA 7.0+ 每线程默认流?

git - 将本地 Git 存储库从 IDE 迁移到 Visual Studio Online

c++ - std::vector - 线程安全和调整大小选项

c++ - 分配了 new 的过滤器/StringSink 是否需要删除?

c - 如何在非英语窗口设置中打印 US-ASCII - 代码页 20127 字符

c# - 需要有关无需构建即可动态设置 Web 服务代理的帮助吗?