首页 > 代码库 > 2017年4月19日(框架搭建)
2017年4月19日(框架搭建)
框架搭建
设想框架:
在VS2010 下的项目管理流程
RoadMarkingDetection:
工程项目入口,启动项目,配置类型Configuration Type 为Application(.exe)
可以调用以下所有模块(.lib)。
commonClass:
保存全局数据类、工具类、共同操作类等算法模块,配置类型Configuration Type 为Static library(.lib)。
laneDetection:
车道线检测算法模块,配置类型Configuration Type 为Static library(.lib),需调用commonClass模块。
typeDetection:
车道线线型检测算法模块,配置类型Configuration Type 为Static library(.lib)
需要车道线检测结果,需调用laneDetection和commonClass模块。
zebraDetection:
斑马线检测算法模块,配置类型Configuration Type 为Static library(.lib)
需要车道线检测结果,需调用laneDetection和commonClass模块。
stoplineDetection:
停止线检测算法模块,配置类型Configuration Type 为Static library(.lib)
需要车道线检测结果,需调用laneDetection和commonClass模块。
添加多个项目
解决方案Solution à Add à New Project…
设置启动项
在需要设置为启动的项目目录上右键选择“Set as Startup Project”
在VS工程中设置所有的输出目录:
为了在工程中方便调用各个模块(项目),可以将所有的输出文件放在一个目录下。
默认下输出是:$(SolutionDir)$(Configuration)\
即在debug下输出在项目文件夹下的debug文件夹下;在release下输出在项目文件夹下的release文件夹下。
假设:现在不管debug或release都输出在工程文件夹下的bin文件夹。
在项目下右键选择项目属性“Properties” à General à Output Directory
设置为: $(ProjectDir)..\bin
设置模块lib属性
如果没有加载其他依赖库,只需要设置:
Output Directory和Configuration Type
设置启动项目属性
在项目下右键选择项目属性“Properties” à Debugging à Command
设置为:$(ProjectDir)..\bin\$(TargetName)$(TargetExt)
在项目下右键选择项目属性“Properties” à Debugging à Working Directory
设置为:$(ProjectDir)..\bin
设置exe项目包含lib项目属性
RoadMarkingDetection项目需要可以调用所有模块(.lib),在没有加载其他依赖库时设置以下属性:
项目属性“Properties” à C/C++ à GeneralàAdditional Include Directories
设置为:
..\commonClass\
..\laneDetection\
..\typeDetection\
..\zebraDetection\
..\stoplineDetection\
项目属性“Properties” à Linker à InputàAddition Dependencies
设置为:
$(ProjectDir)..\bin\commonClass.lib
$(ProjectDir)..\bin\laneDetection.lib
$(ProjectDir)..\bin\typeDetection.lib
$(ProjectDir)..\bin\zebraDetection.lib
$(ProjectDir)..\bin\stoplineDetection.lib
设置lib项目包含lib项目属性
工程内laneDetection、typeDetection、 zebraDetection、stoplineDetection等模块都需要调用commonClass(lib)。在没有加载其他依赖库时设置以下属性:
项目属性“Properties” à C/C++ à GeneralàAdditional Include Directories
设置为:..\commonClass\
(可选)项目属性“Properties” à Librarian à GeneralàAdditional Dependencies
设置为:..\commonClass\
在lib项目加OpenCV依赖库
在VS项目中使用OpenCV网上有很多教程,大致是以下步骤:
①在“Properties” àVC++ DirectoriesàInclude Directories
输入:
(OpenCV目录)\build\include
(OpenCV目录)\build\include\opencv2
(OpenCV目录)\build\include\opencv
②在“Properties” àVC++ DirectoriesàLibrary Directories
输入:
(OpenCV目录)\build\x86\vc10\lib
③在“Properties” àLinkerà InputàAddition Dependencies
(OpenCV目录)\build\x86\vc10\lib\*.lib
或
(OpenCV目录)\build\x86\vc10\lib\*d.lib
Debug版用到的dll和lib文件都有后缀d,Release版使用的不带d。
我们将配置属性写入属性文件.props
这里有几篇参考文献:
VS .props解析:
http://casparzhang.blog.163.com/blog/static/126626558201310179534471/
Visual Studio 2010 C++ 工程文件解读
http://www.cnblogs.com/yaozhongxiao/p/3477308.html
VS2010属性表的建立与灵活运用
http://blog.163.com/yuhua_kui/blog/static/9679964420146945822643/
将编译完的OpenCV3.0.0放在解决方案根目录下。
属性配置文件myprop.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"> <OPENCV_300_X86_VC10_LIB>$(SolutionDir)OpenCV3.0.0\x86\vc10\lib</OPENCV_300_X86_VC10_LIB> <OPENCV_300_X86_VC10_LIB_CORE>$(OPENCV_300_X86_VC10_LIB)\opencv_core300.lib</OPENCV_300_X86_VC10_LIB_CORE> <OPENCV_300_X86_VC10_LIB_HGUI>$(OPENCV_300_X86_VC10_LIB)\opencv_highgui300.lib</OPENCV_300_X86_VC10_LIB_HGUI> <OPENCV_300_X86_VC10_LIB_IMGPROC>$(OPENCV_300_X86_VC10_LIB)\opencv_imgproc300.lib</OPENCV_300_X86_VC10_LIB_IMGPROC> <OPENCV_300_X86_VC10_LIB_VIZ>$(OPENCV_300_X86_VC10_LIB)\opencv_viz300.lib</OPENCV_300_X86_VC10_LIB_VIZ> <OPENCV_300_X86_VC10_LIB_OBJ_DETECT>$(OPENCV_300_X86_VC10_LIB)\opencv_objdetect300.lib</OPENCV_300_X86_VC10_LIB_OBJ_DETECT> <OPENCV_300_X86_VC10_LIB_CODECS>$(OPENCV_300_X86_VC10_LIB)\opencv_imgcodecs300.lib</OPENCV_300_X86_VC10_LIB_CODECS> <OPENCV_300_INCLUDE>$(SolutionDir)OpenCV3.0.0\include\</OPENCV_300_INCLUDE> <RINS_FA_STEREO_DEV>$(SolutionDir)RStereoGigEDev\</RINS_FA_STEREO_DEV> <RINS_FA_STEREO_DEV_VER>2.1.0.213\</RINS_FA_STEREO_DEV_VER> </PropertyGroup> <PropertyGroup /> <ItemDefinitionGroup /> <ItemGroup> <BuildMacro Include="OPENCV_300_X86_VC10_LIB"> <Value>$(OPENCV_300_X86_VC10_LIB)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> <BuildMacro Include="OPENCV_300_X86_VC10_LIB_CORE"> <Value>$(OPENCV_300_X86_VC10_LIB_CORE)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> <BuildMacro Include="OPENCV_300_X86_VC10_LIB_HGUI"> <Value>$(OPENCV_300_X86_VC10_LIB_HGUI)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> <BuildMacro Include="OPENCV_300_X86_VC10_LIB_IMGPROC"> <Value>$(OPENCV_300_X86_VC10_LIB_IMGPROC)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> <BuildMacro Include="OPENCV_300_X86_VC10_LIB_VIZ"> <Value>$(OPENCV_300_X86_VC10_LIB_VIZ)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> <BuildMacro Include="OPENCV_300_X86_VC10_LIB_OBJ_DETECT"> <Value>$(OPENCV_300_X86_VC10_LIB_OBJ_DETECT)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> <BuildMacro Include="OPENCV_300_X86_VC10_LIB_CODECS"> <Value>$(OPENCV_300_X86_VC10_LIB_CODECS)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> <BuildMacro Include="OPENCV_300_INCLUDE"> <Value>$(OPENCV_300_INCLUDE)</Value> <EnvironmentVariable>true</EnvironmentVariable> </BuildMacro> </ItemGroup> </Project> |
① 导入属性配置文件myprop.props
② 项目属性“Properties” à C/C++ à GeneralàAdditional Include Directories
设置为:$(OPENCV_300_INCLUDE)
③ 项目属性“Properties” à Librarian à GeneralàAdditional Dependencies
设置为:
$(OPENCV_300_X86_VC10_LIB_CORE)
$(OPENCV_300_X86_VC10_LIB_HGUI)
$(OPENCV_300_X86_VC10_LIB_IMGPROC)
在exe项目加OpenCV依赖库
①项目属性“Properties” à C/C++ à GeneralàAdditional Include Directories
设置为:$(OPENCV_300_INCLUDE)
②项目属性“Properties” à Librarian à GeneralàAdditional Dependencies
设置为:
$(OPENCV_300_X86_VC10_LIB_CORE)
$(OPENCV_300_X86_VC10_LIB_HGUI)
$(OPENCV_300_X86_VC10_LIB_IMGPROC)
$(OPENCV_300_X86_VC10_LIB_CODECS)
$(OPENCV_300_X86_VC10_LIB_VIZ)
本文出自 “荆棘鸟” 博客,请务必保留此出处http://geoff.blog.51cto.com/1319603/1919322
2017年4月19日(框架搭建)