VS2017目录结构-多项目开发 tcy
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相关推荐
- vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版
vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版 vuejs技术交流QQ群:458915921 有兴趣的可以加入 vuejs 目录结构 build build.js check ...
- hibernate 读取mysql表结构_为什么要用hibernate 与基于数据库表结构的项目开发
最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的, 于是我就去搜了一下,就搜到了一篇帖子 ...
- ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】
一.概述 1.1.脚手架概念 编程领域中的"脚手架(Scaffolding)"指的是能够快速搭建项目"骨架"的一类工具.例如大多数的React项目都有src,p ...
- MAVEN项目标准目录结构 ;
http://blog.csdn.net/lengyue_wy/article/details/6718637 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.标准目录结构: src -ma ...
- Django(part2)--创建项目与Django目录结构
学习笔记,仅供参考 文章目录 Django框架开发 创建项目的指令 Django目录结构 Django框架开发 创建项目的指令 创建项目的指令: django-admin startproject 项 ...
- Unity项目如何组织目录结构
前言 组织好项目的目录结构,是维护项目的很重要的一个点,我们学习别人源码,了解别人的设计思路都是从目录结构开始,一个清晰的目录结构,对项目开发维护,项目管理来说非常的重要,目录维护的好,大家在一起工作 ...
- Unity项目如何组织目录结构,有几个习惯与你相同
前言 组织好项目的目录结构,是维护项目的很重要的一个点,我们学习别人源码,了解别人的设计思路都是从目录结构开始,一个清晰的目录结构,对项目开发维护,项目管理来说非常的重要,目录维护的好,大家在一起工作 ...
- C语言GUI编程之数字记忆游戏——项目目录结构和初步的窗口布局
目录 项目目录结构 创建项目 命名规范 目录结构 编程模式 MVC 实例 初步的窗口布局 效果 EasyX的使用 总结 项目目录结构 创建项目 在Visual Studio 2022中创建一个空白的项 ...
- tomcat_动态java项目的目录结构
* 静态项目和动态项目: * 目录结构 * java动态项目的目录结构: -- 项目的根目录 ...
最新文章
- np.ravel()和np.flatten() 区别
- 车企纷抢无人驾驶赛道,中国智能汽车确定将立法
- Interview Q A 程序会在哪一行死掉
- Window核心编程
- hdfs 操作 入门api
- P2472-[SCOI2007]蜥蜴【网络流】
- Linux复制文件到usb设备中,使用shell脚本实现USB设备的加载与文件复制
- sqlserver查询语法
- Linux 命令(113)—— seq 命令
- JavaScript学习之旅-9(原创)
- 个推华为推送、小米推送、苹果推送及角标
- Freebase Data Dump结构初探
- 创造与魔法怎么自建服务器,创造与魔法如何建立部落 部落建造条件
- Robotic KDL library
- android 获取本地图片路径
- PPT文件转换成PDF格式
- 维特WT931 姿态角度传感器(陀螺仪)使用记录
- 【入门笔记】量化投资是什么?
- python在线办公自动化oa系统django408
- 联想7400pro打印有横黑道
热门文章
- 小程序点击按钮转发给朋友
- Python中的异常处理raise介绍
- ListBox控件、CheckBox控件的多选功能
- 缺陷管理【重点内容哦】
- python学习随笔—MacOS卡特琳娜下终端shell变成zsh后anaconda命令失效的解决
- 高数_第4章曲线积分和曲面积分_对弧长和对坐标的区别
- Android 进阶——持久化存储序列化方案Serializable和IPC及内存序列化方案Parcelable详解与应用
- python手机版代码大全高楼大厦_【What if 系列】摩天大楼
- android手机ssh连接linux好用工具 JuiceSSH
- 【校招面试】奇安信 - 测试工程师面经(一面)