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