VS2017目录结构-多项目开发 tcy
生活随笔
收集整理的這篇文章主要介紹了
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 91-blockchain入门
- 下一篇: C3沙龙北京第十三次活动整理