在本文开头,我感谢opencv中文论坛中帖子——“VS2010下解决每次都需要配置的问题”对我的引导和启发,本文是基于该文章的理解、实践与总结。该贴链接如下:
http://www.opencv.org.cn/forum.php?mod=viewthread&tid=15682
该贴提出,自版本2.1之后,opencv把CV库拆成很多库。这就增加了每次建工程添加依赖项工作量。传统的添加依赖项的设置方法:
方法1:
在Linker->input->AdditionalDependencies中添加 opencv_contrib2410.lib等
方法2:
在代码中添加 #pragma comment(lib," opencv_contrib2410.lib")
上面两种方法,每次重建工程都得添加,做项目还好,要是新手学习,每次都添加,就显得很麻烦了?
参考该贴在电脑上做出如下修改后能实现”一次修改,永久管用”。该方法分为两步:
一:include和lib路径设置
首先:打开C:\Users\*****\AppData\Local\Microsoft\MSBuild\v4.0下的Microsoft.Cpp.Win32.user.props(如使用Notepad++)
该文件内容如下:
<?xmlversion="1.0" encoding="utf-8"?>
<ProjectDefaultTargets="Build" ToolsVersion="4.0"xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ExecutablePath>$(ExecutablePath)</ExecutablePath>
<IncludePath>$(IncludePath)</IncludePath>
<ReferencePath>$(ReferencePath)</ReferencePath>
<LibraryPath>$(LibraryPath)</LibraryPath>
<SourcePath>$(SourcePath)</SourcePath>
<ExcludePath>$(ExcludePath)</ExcludePath>
</PropertyGroup>
</Project>
其次,对该文件作如下修改。即在<IncludePath>与$(IncludePath)</IncludePath>中间添加安装目录下的include路径,在<LibraryPath>与$(LibraryPath)</LibraryPath>中间添加安装目录下的lib路径
<?xmlversion="1.0" encoding="utf-8"?>
<ProjectDefaultTargets="Build" ToolsVersion="4.0"xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ExecutablePath>$(ExecutablePath)</ExecutablePath>
<IncludePath>D:\ProgramFiles\opencv\opencv\build\include;\Include;D:\ProgramFiles\opencv\opencv\build\include\opencv;D:\ProgramFiles\opencv\opencv\build\include\opencv2;$(IncludePath)</IncludePath>
<ReferencePath>;$(ReferencePath)</ReferencePath>
<LibraryPath>D:\Program Files\opencv\opencv\build\x86\vc10\lib;$(LibraryPath)</LibraryPath>
<SourcePath>$(SourcePath)</SourcePath>
<ExcludePath>$(ExcludePath)</ExcludePath>
</PropertyGroup>
</Project>
二、链接库的设置
首先:打开D:\ProgramFiles\Microsoft Visual Studio 10.0\VC\VCWizards\2052
下common.js(如使用Notepad++),定位到该文件中的函数function AddCommonConfig
该函数里面两次出现如下代码
var LinkTool =config.Tools("VCLinkerTool");
if (!bForEmptyProject) LinkTool.SubSystem =subSystemWindows;
LinkTool.GenerateDebugInformation = true;
一次出现是debug版本,一次出现是release版本。
然后,在两处代码处作如下修改,便能添加默认的依赖项。即在LinkTool定义之后使用LinkTool.AdditionalDependencies函数添加各个lib
1)Debug版本处
var LinkTool =config.Tools("VCLinkerTool");
LinkTool.AdditionalDependencies= "opencv_contrib2410d.lib opencv_core2410d.lib opencv_features2d2410d.libopencv_flann2410d.lib opencv_gpu2410d.lib opencv_highgui2410d.libopencv_imgproc2410d.lib opencv_legacy2410d.lib opencv_ml2410d.libopencv_nonfree2410d.lib opencv_objdetect2410d.lib opencv_ocl2410d.libopencv_photo2410d.lib opencv_stitching2410d.lib opencv_superres2410d.libopencv_ts2410d.lib opencv_video2410d.lib opencv_videostab2410d.lib";
if(!bForEmptyProject) LinkTool.SubSystem = subSystemWindows;
LinkTool.GenerateDebugInformation= true;
2)Release版本处
LinkTool= config.Tools("VCLinkerTool");
LinkTool.AdditionalDependencies ="opencv_contrib2410.lib opencv_core2410.lib opencv_features2d2410.libopencv_flann2410.lib opencv_gpu2410.lib opencv_highgui2410.libopencv_imgproc2410.lib opencv_legacy2410.lib opencv_ml2410.libopencv_nonfree2410.lib opencv_objdetect2410.lib opencv_ocl2410.libopencv_photo2410.lib opencv_stitching2410.lib opencv_superres2410.libopencv_ts2410.lib opencv_video2410.libopencv_videostab2410.lib";
if (!bForEmptyProject)LinkTool.SubSystem = subSystemWindows;
LinkTool.GenerateDebugInformation= true;
综上,完成设置,可以使用例程进行测试