码迷,mamicode.com
首页 > 其他好文 > 详细

2017年4月19日(框架搭建)

时间:2017-04-25 21:21:18      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:c++   项目管理   工程   

框架搭建

设想框架:

技术分享

技术分享

技术分享

在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日(框架搭建)

标签:c++   项目管理   工程   

原文地址:http://geoff.blog.51cto.com/1319603/1919322

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!