VS2017目录结构-多项目开发 tcy
生活随笔
收集整理的這篇文章主要介紹了
VS2017目录结构-多项目开发 tcy
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.1.說明:多項(xiàng)目開發(fā)盡可能實(shí)現(xiàn)代碼模塊化,減少對其它項(xiàng)目依賴性,最好能夠獨(dú)立實(shí)現(xiàn)它設(shè)計(jì)功能如創(chuàng)建一個解決方案,一個UI窗體部分,一個網(wǎng)絡(luò)通信,一個視覺采集,一個視覺算法在網(wǎng)絡(luò)項(xiàng)目不會使用任何關(guān)于C++窗體東西,減少項(xiàng)目間耦合性,讓模塊功能獨(dú)立不依賴于另一項(xiàng)目1.2.步驟:創(chuàng)建解決方案TcyVisionSystem,添加項(xiàng)目TcyHalcon基于控制臺,添加項(xiàng)目TcyVisionUI基于窗體解決方案--屬性--通用屬性--啟用項(xiàng)目:當(dāng)前啟動項(xiàng)目:...多個啟動項(xiàng)目:適用多進(jìn)程調(diào)試及多exe間通信調(diào)試少見。服務(wù)器程序常用一監(jiān)聽一個發(fā)送1.3.注意:若項(xiàng)目Project2(.exe)需要Project1(dll)注意生成順序,先project1然后project2添加項(xiàng)目依賴項(xiàng):解決方案--屬性--通用屬性--項(xiàng)目依賴性:(項(xiàng)目:Priject2 依賴于:Project1)不要出現(xiàn)相互依賴情況 (1依賴2,2依賴3,3依賴1也不行)
2.項(xiàng)目文件夾結(jié)構(gòu):
2.1.步驟:
1)項(xiàng)目創(chuàng)建完成后,執(zhí)行create_dir.bat創(chuàng)建文件夾
2)用屬性表配置項(xiàng)目的屬性(可根據(jù)自己的需求自由修改定制)
3)在VS2017解決方案中創(chuàng)建虛擬文件夾,添加現(xiàn)有文件這樣你創(chuàng)建的實(shí)際文件夾和虛擬的文件夾對應(yīng),方便編寫調(diào)試。
2.2.原文件夾結(jié)構(gòu):source/repos/Project1/ 解決方案文件夾./sln: 解決方案文件,平常打開項(xiàng)目就用它,文本文件./.vs 存儲用戶在解決方案中工作配置 注1./Debug 配置對應(yīng)的生成目錄 編譯的中間文件夾保存初步編譯文件--a.obj 日志文件--Project1.obj 日志文件--vc141.idb 最小生成使用文件夾-只編譯有變換的代碼--vc141.pdb cpp文件都調(diào)用編譯器生成一個.obj文件./Release 配置對應(yīng)的生成目錄./Release_Debug 配置對應(yīng)的生成目錄./x64 配置對應(yīng)的生成目錄./Project1 項(xiàng)目文件夾--a.cpp--a.h --main.cpp 注2//配置文件--Project1.vcxproj--Project1.vcxproj.filters 項(xiàng)目篩選器(虛擬文件夾)保存filters信息 xml文本 --project1.vcxproj.user 項(xiàng)目用戶配置文件 xml文本注1:具體包括VS關(guān)閉前最后的窗口布局、最后打開的選項(xiàng)卡/操作記錄/文件文檔某些自定義配置/開發(fā)環(huán)境、調(diào)試斷點(diǎn)等這類設(shè)置信息和狀態(tài)注2:所有在cpp文件下的變量定義和函數(shù)定義都是全局的,整個項(xiàng)目都共享(只是項(xiàng)目,不是解決方案)
?
?
?
2.3.修改項(xiàng)目文件夾: source/repos/TcyVisionSystem/解決方案文件夾./vs./Data //配置文件(VS虛擬+實(shí)際文件夾)tcy_custom_customization.prostcy_cv.propstcy_cv_64_debug.propstcy_cv_64_release.propstcy_qt_release_props./Include //(VS虛擬+實(shí)際文件夾)./Intermediate //中間過程存儲.obj格式的目標(biāo)文件等 (VS虛擬+實(shí)際文件夾)注1./Lib //(VS虛擬+實(shí)際文件夾)第三方庫文件./Output //(實(shí)際文件夾)存儲最終生成的.exe,.dll,.pdb,.itk文件 x64/Debug,Release./Resource //(VS虛擬+實(shí)際文件夾)./Resource/Data //(VS虛擬+實(shí)際文件夾)./Resource/Icon //(VS虛擬+實(shí)際文件夾)./Resource/Picture//(VS虛擬+實(shí)際文件夾)./TcyHalcon //項(xiàng)目1(VS創(chuàng)建)(VS虛擬+實(shí)際文件夾)存放配置文件及頭文件cpp文件 注3./TcyHalcon/TcyHalcon.vcxproj./TcyHalcon/TcyHalcon.vcxproj.filters ./TcyHalcon/TcyHalcon.vcxproj.user./TcyHalcon/xxx.h //頭文件./TcyHalcon/xxx.cpp //用戶代碼./TcyHalcon/main.cpp...... //創(chuàng)建其他虛擬文件夾./TcyVisionUI //項(xiàng)目2(VS創(chuàng)建)(VS虛擬+實(shí)際文件夾)......./Test //(VS虛擬+實(shí)際文件夾)存放測試程序 注2./Test/TcyHalcon //項(xiàng)目1(VS創(chuàng)建)(VS虛擬+實(shí)際文件夾)./Test/TcyVisionUI./create_dir.bat //創(chuàng)建文件夾 ./TcyVisionSystem.sln 注1:int文件夾下有debug,release文件夾設(shè)置 項(xiàng)目右鍵-屬性-常規(guī)-中間目錄,添加宏 $(SolutionDir)Int\$(Configuration)\$(ProjectName)\注2:添加虛擬文件夾:右鍵項(xiàng)目(或虛擬文件夾如"源文件")-添加-新建篩選項(xiàng)結(jié)果在當(dāng)前目錄下創(chuàng)建子文件夾;若要移動文件用鼠標(biāo)拖動文件或點(diǎn)擊添加注3:本方案把頭文件和用戶代碼放在項(xiàng)目文件夾下,將其他編譯輸出資源文件,測試文件放在其他文件夾中(硬盤中)這樣的目的是后續(xù)添加修改變動相對來說比較小且方便,當(dāng)然你也可以分開存放后續(xù)比較麻煩。若要這樣做參考https://blog.csdn.net/logic9169/article/details/105640842/注意:不建議直接配置項(xiàng)目屬性,而應(yīng)先編寫相應(yīng)的屬性文件xxx.pros,這樣后續(xù)需要什么只需添加相應(yīng)的屬性表即可。項(xiàng)目建議獨(dú)立,一個用途一個項(xiàng)目,減少項(xiàng)目間的耦合性,便以使用修改調(diào)試。 3.備注: 3.1.create_dir.bat::創(chuàng)建輸出目錄 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文件夾中創(chuàng)建項(xiàng)目文件夾 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到當(dāng)前可執(zhí)行文件目錄: 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>?
總結(jié)
以上是生活随笔為你收集整理的VS2017目录结构-多项目开发 tcy的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 91-blockchain入门
- 下一篇: VS2017 C++ Catch单元测试