1.1.说明:多项目开发尽可能实现代码模块化,减少对其它项目依赖性,最好能够独立实现它设计功能如创建一个解决方案,一个UI窗体部分,一个网络通信,一个视觉采集,一个视觉算法在网络项目不会使用任何关于C++窗体东西,减少项目间耦合性,让模块功能独立不依赖于另一项目1.2.步骤:创建解决方案TcyVisionSystem,添加项目TcyHalcon基于控制台,添加项目TcyVisionUI基于窗体解决方案--属性--通用属性--启用项目:当前启动项目:...多个启动项目:适用多进程调试及多exe间通信调试少见。服务器程序常用一监听一个发送1.3.注意:若项目Project2(.exe)需要Project1(dll)注意生成顺序,先project1然后project2添加项目依赖项:解决方案--属性--通用属性--项目依赖性:(项目:Priject2 依赖于:Project1)不要出现相互依赖情况 (1依赖2,2依赖3,3依赖1也不行) 
2.项目文件夹结构:
2.1.步骤:
1)项目创建完成后,执行create_dir.bat创建文件夹
2)用属性表配置项目的属性(可根据自己的需求自由修改定制)
3)在VS2017解决方案中创建虚拟文件夹,添加现有文件这样你创建的实际文件夹和虚拟的文件夹对应,方便编写调试。 
2.2.原文件夹结构:source/repos/Project1/  解决方案文件夹./sln:              解决方案文件,平常打开项目就用它,文本文件./.vs              存储用户在解决方案中工作配置 注1./Debug            配置对应的生成目录 编译的中间文件夹保存初步编译文件--a.obj         日志文件--Project1.obj  日志文件--vc141.idb     最小生成使用文件夹-只编译有变换的代码--vc141.pdb     cpp文件都调用编译器生成一个.obj文件./Release          配置对应的生成目录./Release_Debug    配置对应的生成目录./x64              配置对应的生成目录./Project1         项目文件夹--a.cpp--a.h --main.cpp   注2//配置文件--Project1.vcxproj--Project1.vcxproj.filters 项目筛选器(虚拟文件夹)保存filters信息 xml文本 --project1.vcxproj.user    项目用户配置文件 xml文本注1:具体包括VS关闭前最后的窗口布局、最后打开的选项卡/操作记录/文件文档某些自定义配置/开发环境、调试断点等这类设置信息和状态注2:所有在cpp文件下的变量定义和函数定义都是全局的,整个项目都共享(只是项目,不是解决方案)

2.3.修改项目文件夹:
source/repos/TcyVisionSystem/解决方案文件夹./vs./Data           //配置文件(VS虚拟+实际文件夹)tcy_custom_customization.prostcy_cv.propstcy_cv_64_debug.propstcy_cv_64_release.propstcy_qt_release_props./Include         //(VS虚拟+实际文件夹)./Intermediate    //中间过程存储.obj格式的目标文件等 (VS虚拟+实际文件夹)注1./Lib             //(VS虚拟+实际文件夹)第三方库文件./Output          //(实际文件夹)存储最终生成的.exe,.dll,.pdb,.itk文件 x64/Debug,Release./Resource        //(VS虚拟+实际文件夹)./Resource/Data   //(VS虚拟+实际文件夹)./Resource/Icon   //(VS虚拟+实际文件夹)./Resource/Picture//(VS虚拟+实际文件夹)./TcyHalcon              //项目1(VS创建)(VS虚拟+实际文件夹)存放配置文件及头文件cpp文件 注3./TcyHalcon/TcyHalcon.vcxproj./TcyHalcon/TcyHalcon.vcxproj.filters ./TcyHalcon/TcyHalcon.vcxproj.user./TcyHalcon/xxx.h        //头文件./TcyHalcon/xxx.cpp      //用户代码./TcyHalcon/main.cpp......                    //创建其他虚拟文件夹./TcyVisionUI            //项目2(VS创建)(VS虚拟+实际文件夹)......./Test                   //(VS虚拟+实际文件夹)存放测试程序 注2./Test/TcyHalcon         //项目1(VS创建)(VS虚拟+实际文件夹)./Test/TcyVisionUI./create_dir.bat         //创建文件夹 ./TcyVisionSystem.sln   注1:int文件夹下有debug,release文件夹设置 项目右键-属性-常规-中间目录,添加宏 $(SolutionDir)Int\$(Configuration)\$(ProjectName)\注2:添加虚拟文件夹:右键项目(或虚拟文件夹如"源文件")-添加-新建筛选项结果在当前目录下创建子文件夹;若要移动文件用鼠标拖动文件或点击添加注3:本方案把头文件和用户代码放在项目文件夹下,将其他编译输出资源文件,测试文件放在其他文件夹中(硬盘中)这样的目的是后续添加修改变动相对来说比较小且方便,当然你也可以分开存放后续比较麻烦。若要这样做参考https://blog.csdn.net/logic9169/article/details/105640842/注意:不建议直接配置项目属性,而应先编写相应的属性文件xxx.pros,这样后续需要什么只需添加相应的属性表即可。项目建议独立,一个用途一个项目,减少项目间的耦合性,便以使用修改调试。
3.备注:
3.1.create_dir.bat::创建输出目录  tcy 2021/4/4
echo off
set "cur_path=%cd%"
echo 1.1cur_path=%cur_path%set res=Resource\
set "lst_first=Data Output Intermediate Lib  Include  Resource Test"
set "res_sub=%res%Data %res%Icon %res%Picture"set "lst=%lst_first% %res_sub%"
set "tmp=%cur_path%\%res_sub%"(for %%a in (%lst%) do (if not exist %cur_path%\%%a (mkdir %cur_path%\%%a)
))::在Test文件夹中创建项目文件夹
dir /ad /b >tmp.txt
for /f "skip=1 delims=" %%a in ('findstr /vi "Data Include Lib Output Resource Test Intermediate" tmp.txt') do (echo %%a
if not exist %cur_path%\Test\%%a (mkdir %cur_path%\Test\%%a)
)del tmp.txt
3.2.tcy_qt_release.pros 测试配置文件REM **************************************
REM qt release 拷贝dll到当前可执行文件目录:
REM 测试程序1:
REM **************************************REM echo off
REM set qt_root=C:\Qt\Qt5.14.2\5.14.2\msvc2017_64
REM set "cur_path=C:\Users\Administrator\source\repos\TcyVisionSystem"REM set "release_path=%cur_path%\Release"
REM set "win_path=%cur_path%\Release\plugins\platforms"REM echo on
REM echo cur_path=%cur_path%
REM echo release_path=%release_path%
REM echo win_path=%win_path%REM echo off
REM if not exist %win_path% mkdir %win_path%REM echo on
REM copy  %qt_root%\bin\Qt5Widgets.dll %release_path%\
REM copy %qt_root%\bin\Qt5Gui.dll %release_path%\
REM copy %qt_root%\bin\Qt5Core.dll %release_path%\
REM copy %qt_root%\plugins\platforms\qwindows.dll %win_path%\REM ************************************
REM tcy_qt.props
REM 生成前事件代码:
REM ************************************set qt_root=$(QtInstallDir)set release_path=$(SolutionDir)$(Platform)\$(Configuration)
set "win_path=$(SolutionDir)$(Platform)\$(Configuration)\plugins\platforms"if not exist %win_path% mkdir %win_path%echo on
copy  %qt_root%\bin\Qt5Widgets.dll %release_path%\
copy %qt_root%\bin\Qt5Gui.dll %release_path%\
copy %qt_root%\bin\Qt5Core.dll %release_path%\
copy %qt_root%\plugins\platforms\qwindows.dll %win_path%\
3.3.tcy_custom_customization.pros<?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><OutDir>$(SolutionDir)output\$(Configuration)\</OutDir><IntDir>$(SolutionDir)Intermediate\$(Configuration)\</IntDir></PropertyGroup><ItemDefinitionGroup /><ItemGroup />
</Project>
3.4.tcy_cv.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><IncludePath>$(IncludePath)</IncludePath></PropertyGroup><ItemDefinitionGroup><ClCompile><AdditionalIncludeDirectories>C:\ProgramData\Anaconda3\include;$(HALCONROOT)\include;$(HALCONROOT)\include\halconcpp;D:\opencv\build\include;D:\catch;D:\pybind11-master\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories></ClCompile><Link><AdditionalLibraryDirectories>C:\ProgramData\Anaconda3\libs;C:\Program Files\MVTec\HALCON-18.11-Progress\lib\x64-win64;D:\opencv\build\x64\vc15\lib</AdditionalLibraryDirectories><AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies></Link></ItemDefinitionGroup><ItemGroup />
</Project>
3.5.tcy_cv_64_debug.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><Link><AdditionalDependencies>opencv_world451d.lib;halcond.lib;halconcppd.lib;python3d.lib;python38d.lib;%(AdditionalDependencies)</AdditionalDependencies></Link></ItemDefinitionGroup><ItemGroup />
</Project>
3.6.tcy_cv_64_release.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><Link><AdditionalDependencies>opencv_world451.lib;halcon.lib;halconcpp.lib;python3.lib;python38.lib;%(AdditionalDependencies)</AdditionalDependencies></Link></ItemDefinitionGroup><ItemGroup />
</Project>

VS2017目录结构-多项目开发 tcy相关推荐

  1. vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版

    vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版 vuejs技术交流QQ群:458915921 有兴趣的可以加入 vuejs 目录结构 build build.js check ...

  2. hibernate 读取mysql表结构_为什么要用hibernate 与基于数据库表结构的项目开发

    最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的, 于是我就去搜了一下,就搜到了一篇帖子 ...

  3. ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】

    一.概述 1.1.脚手架概念 编程领域中的"脚手架(Scaffolding)"指的是能够快速搭建项目"骨架"的一类工具.例如大多数的React项目都有src,p ...

  4. MAVEN项目标准目录结构 ;

    http://blog.csdn.net/lengyue_wy/article/details/6718637 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.标准目录结构: src -ma ...

  5. Django(part2)--创建项目与Django目录结构

    学习笔记,仅供参考 文章目录 Django框架开发 创建项目的指令 Django目录结构 Django框架开发 创建项目的指令 创建项目的指令: django-admin startproject 项 ...

  6. Unity项目如何组织目录结构

    前言 组织好项目的目录结构,是维护项目的很重要的一个点,我们学习别人源码,了解别人的设计思路都是从目录结构开始,一个清晰的目录结构,对项目开发维护,项目管理来说非常的重要,目录维护的好,大家在一起工作 ...

  7. Unity项目如何组织目录结构,有几个习惯与你相同

    前言 组织好项目的目录结构,是维护项目的很重要的一个点,我们学习别人源码,了解别人的设计思路都是从目录结构开始,一个清晰的目录结构,对项目开发维护,项目管理来说非常的重要,目录维护的好,大家在一起工作 ...

  8. C语言GUI编程之数字记忆游戏——项目目录结构和初步的窗口布局

    目录 项目目录结构 创建项目 命名规范 目录结构 编程模式 MVC 实例 初步的窗口布局 效果 EasyX的使用 总结 项目目录结构 创建项目 在Visual Studio 2022中创建一个空白的项 ...

  9. tomcat_动态java项目的目录结构

    * 静态项目和动态项目:             * 目录结构                 * java动态项目的目录结构:                     -- 项目的根目录       ...

最新文章

  1. np.ravel()和np.flatten() 区别
  2. 车企纷抢无人驾驶赛道,中国智能汽车确定将立法
  3. Interview Q A 程序会在哪一行死掉
  4. Window核心编程
  5. hdfs 操作 入门api
  6. P2472-[SCOI2007]蜥蜴【网络流】
  7. Linux复制文件到usb设备中,使用shell脚本实现USB设备的加载与文件复制
  8. sqlserver查询语法
  9. Linux 命令(113)—— seq 命令
  10. JavaScript学习之旅-9(原创)
  11. 个推华为推送、小米推送、苹果推送及角标
  12. Freebase Data Dump结构初探
  13. 创造与魔法怎么自建服务器,创造与魔法如何建立部落 部落建造条件
  14. Robotic KDL library
  15. android 获取本地图片路径
  16. PPT文件转换成PDF格式
  17. 维特WT931 姿态角度传感器(陀螺仪)使用记录
  18. 【入门笔记】量化投资是什么?
  19. python在线办公自动化oa系统django408
  20. 联想7400pro打印有横黑道

热门文章

  1. 小程序点击按钮转发给朋友
  2. Python中的异常处理raise介绍
  3. ListBox控件、CheckBox控件的多选功能
  4. 缺陷管理【重点内容哦】
  5. python学习随笔—MacOS卡特琳娜下终端shell变成zsh后anaconda命令失效的解决
  6. 高数_第4章曲线积分和曲面积分_对弧长和对坐标的区别
  7. Android 进阶——持久化存储序列化方案Serializable和IPC及内存序列化方案Parcelable详解与应用
  8. python手机版代码大全高楼大厦_【What if 系列】摩天大楼
  9. android手机ssh连接linux好用工具 JuiceSSH
  10. 【校招面试】奇安信 - 测试工程师面经(一面)