VS下的解决方案目录结构设置和管理
Posted 车臣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS下的解决方案目录结构设置和管理相关的知识,希望对你有一定的参考价值。
转载:http://blog.csdn.net/pl20140910/article/details/52074165
为了方便管理自己写的代码,也为了日后工作能方便的查找之前做过相同的代码,仿照某源码结构,自己建了一个解决方案,以方便管理自己的代码,这样代码迁移也比较方便,不需要每次重新配置第三方库或其它需要依赖的库。下图为整个解决方案目录结构设置:
图1 VS解决方案目录结构设置
如上图,为了方便管理,以后所有的项目都写在AllProject解决方案里,途中红色的部分表示的都是文件夹,绿色的表示文件。
其中,“3rdPart”文件夹里面存放的是第三方库,所有的第三方库都放置在干目录下,每个库文件夹下面包含各自的include,dll,lib等。
“InDir”为中间输出目录,里面包含Debug和Release版,在这两个文件夹下面,分别又会生成以具体项目名字为文件夹名的文件夹,用来存放各自项目的中间输出文件。“OutDir”为最终生成的结果输出目录,里面包含了Debug和Release版,同时一些项目需要的配置文件放在“config”文件夹下,专门用来放置程序中需要的配置文件或信息。“data”文件夹下面为放置程序运行时有可能要用到的数据文件,比如gdal的某些功能可能需要gdal自带的数据中的一些文件,比如投影文件等一些信息,里面的gdaldata文件夹存放的就是gdal需要的一些数据文件。当然,在“OutDir”目录下也可以放置其它一些文件,比如资源文件,帮助文件等等,在发布程序的时候,可以将该目录下除debug版外的所有文件分发给用户使用。
“AllProject_SDK”文件夹下面放置的是自己封装的一些功能DLL,包括dll,include,lib三个文件夹。
AllProjectSetEnv.bat是一个批处理文件,用于设置系统变量,将以上提到的一些路径利用命令行自动添加到系统环境变量中,这样在迁移代码的时候就不需要担心因为更换路径而重新配置项目属性,只需以管理员身份运行AllProjectSetEnv.bat文件就可以把相关路径以宏的形式自动添加到环境变量中。下面给出我所配置的一些系统环境变量:
1 rem Windows命令行获取当前bat文件所在目录,添加永久系统环境变量的方法 2 rem 请注意用管理员权限运行该批处理文件,否则会出现find命令无法识别的错误 3 4 rem @ 关闭单行回显 5 @echo off rem 从本行开始关闭回显。一般批处理第一行都是这个 6 7 ver | find "4.0." > NUL && goto win_xp 8 ver | find "4.10." > NUL && goto win_xp 9 ver | find "4.90." > NUL && goto win_xp 10 ver | find "3.51." > NUL && goto win_xp 11 ver | find "5.0." > NUL && goto win_xp 12 ver | find "5.1." > NUL && goto win_xp 13 ver | find "5.2." > NUL && goto win_xp 14 ver | find "6.0." > NUL && goto win7 15 ver | find "6.1." > NUL && goto win7 16 ver | find "6.2." > NUL && goto win7 17 ver | find "6.3." > NUL && goto win8 18 19 :win_xp 20 rem 设置第三方库环境变量THIRD_PARTY 21 wmic ENVIRONMENT where "name=‘ALLPROJECT_THIRD_PARTY‘" delete 22 wmic ENVIRONMENT create name="ALLPROJECT_THIRD_PARTY",username="<system>",VariableValue="%~dp03rdPart" 23 echo %ALLPROJECT_THIRD_PARTY% 24 25 rem 设置ALLPROJECT_TRUNK环境变量ALLPROJECT_TRUNK,表示当前的源码主干目录 26 wmic ENVIRONMENT where "name=‘ALLPROJECT_TRUNK‘" delete 27 wmic ENVIRONMENT create name="ALLPROJECT_TRUNK",username="<system>",VariableValue=%~dp0 28 echo %ALLPROJECT_TRUNK% 29 30 rem 设置SDK环境变量ALLPROJECT_SDK_INC、ALLPROJECT_SDK_LIB和ALLPROJECT_SDK_DLL,暂时没用到 31 rem wmic ENVIRONMENT where "name=‘ALLPROJECT_SDK_INC‘" delete 32 rem wmic ENVIRONMENT create name="ALLPROJECT_SDK_INC",username="<system>",VariableValue="%~dp0ALLPROJECT_SDK\include" 33 rem echo %ALLPROJECT_SDK_INC% 34 35 rem wmic ENVIRONMENT where "name=‘ALLPROJECT_SDK_LIB‘" delete 36 rem wmic ENVIRONMENT create name="ALLPROJECT_SDK_LIB",username="<system>",VariableValue="%~dp0ALLPROJECT_SDK\lib\" 37 rem echo %ALLPROJECT_SDK_LIB% 38 39 rem wmic ENVIRONMENT where "name=‘ALLPROJECT_SDK_DLL‘" delete 40 rem wmic ENVIRONMENT create name="ALLPROJECT_SDK_DLL",username="<system>",VariableValue="%~dp0ALLPROJECT_SDK\dll" 41 rem echo %ALLPROJECT_SDK_DLL% 42 43 rem 设置exe输出路径 44 wmic ENVIRONMENT where "name=‘ALLPROJECT_BIN‘" delete 45 wmic ENVIRONMENT create name="ALLPROJECT_BIN",username="<system>",VariableValue="%~dp0OutDir" 46 echo %ALLPROJECT_BIN% 47 48 rem 设置临时文件输出路径 49 wmic ENVIRONMENT where "name=‘ALLPROJECT_INTDIR‘" delete 50 wmic ENVIRONMENT create name="ALLPROJECT_INTDIR",username="<system>",VariableValue="%~dp0IntDir" 51 echo %ALLPROJECT_INTDIR% 52 53 goto end 54 55 :win7 56 @setx ALLPROJECT_THIRD_PARTY "%~dp03rdPart" -m 57 58 @setx ALLPROJECT_TRUNK %~dp0 -m 59 60 rem @setx ALLPROJECT_SDK_INC "%~dp0ALLPROJECT_SDK\include" -m 61 62 rem @setx ALLPROJECT_SDK_LIB "%~dp0ALLPROJECT_SDK\lib" -m 63 64 rem @setx ALLPROJECT_SDK_DLL "%~dp0ALLPROJECT_SDK\dll" -m 65 66 @setx ALLPROJECT_BIN "%~dp0OutDir" -m 67 68 @setx ALLPROJECT_INTDIR "%~dp0IntDir" -m 69 70 goto end 71 72 :win8 73 @setx ALLPROJECT_THIRD_PARTY "%~dp03rdPart" -m 74 75 @setx ALLPROJECT_TRUNK %~dp0 -m 76 77 rem @setx ALLPROJECT_SDK_INC "%~dp0ALLPROJECT_SDK\include" -m 78 79 rem @setx ALLPROJECT_SDK_LIB "%~dp0ALLPROJECT_SDK\lib" -m 80 81 rem @setx ALLPROJECT_SDK_DLL "%~dp0ALLPROJECT_SDK\dll" -m 82 83 @setx ALLPROJECT_BIN "%~dp0OutDir" -m 84 85 @setx ALLPROJECT_INTDIR "%~dp0IntDir" -m 86 87 goto end 88 89 :end 90 pause
这样以后自己的项目不管是学习还是测试用的一些代码都可以放在该解决方案里,方便统一管理,形成一个代码库。只是每次新建项目或添加项目的时候,需要配置项目的一些属性(Debug和Release可根据具体情况选择配置),以达到预期的结果,具体的配置方法即“项目属性配置文件.txt”里的内容,该文件里的内容如下:
1 项目属性配置: 2 3 说明:$(ConfigurationName) -- debug/release 4 $(ProjectName) -- 项目名称 5 配置属性(Debug和Release版都需要配置) 6 常规 7 输出目录: 8 $(ALLPROJECT_BIN)/$(ConfigurationName) 9 中间目录: 10 $(ALLPROJECT_INTDIR)/$(ConfigurationName)/$(ProjectName) 11 12 字符集:使用多字节字符集 13 C/C++ 14 常规 15 附加包含目录: 16 $(ALLPROJECT_THIRD_PARTY)/boost_1_42_vc9/include 17 $(ALLPROJECT_THIRD_PARTY)/gdal_1_10_1_vc9/include 18 $(ALLPROJECT_THIRD_PARTY)/log4cplus_1_0_3_vc9/include 19 20 连接器 21 常规 22 附加库目录: 23 $(ALLPROJECT_THIRD_PARTY)/boost_1_42_vc9/lib 24 $(ALLPROJECT_THIRD_PARTY)/gdal_1_10_1_vc9/lib 25 $(ALLPROJECT_THIRD_PARTY)/log4cplus_1_0_3_vc9/lib 26 27 输入 28 附加依赖项 29 Debug 30 log4cplusD.lib 31 gdal_i_D.lib 32 boost_filesystem-vc90-mt-gd-1_42.lib 33 boost_regex-vc90-mt-gd-1_42.lib 34 boost_system-vc90-mt-gd-1_42.lib 35 libboost_filesystem-vc90-mt-gd-1_42.lib 36 libboost_system-vc90-mt-gd-1_42.lib 37 Release 38 log4cplus.lib 39 gdal_i.lib 40 libboost_system-vc90-mt-1_42.lib 41 libboost_filesystem-vc90-mt-1_42.lib 42 boost_system-vc90-mt-1_42.lib 43 boost_regex-vc90-mt-1_42.lib 44
以上是关于VS下的解决方案目录结构设置和管理的主要内容,如果未能解决你的问题,请参考以下文章
vc++2010设置和c#一样的代码段,vs2010 两下tab设置
在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途