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         
时间: 2024-08-05 16:09:10

VS下的解决方案目录结构设置和管理的相关文章

Vs 2008 解决方案的目录结构设置和管理(转)

http://blog.csdn.net/lcj_cjfykx/article/details/8632459 MS的这个IDE,实在庞杂得恐怖.从大学开始,我就一直用VC的各个版本写程序至今,细细想来,也仅仅是窥豹一斑,羞愧不已.但若仔细翻阅文档,又觉得时间花得不值,于是便一直凑活地用着. 前段时间负责搭建新项目的开发环境,兼一直在看Gamebryo的代码,从中借鉴了不少工程管理的方法.结合以前使用VC的经验,现总结下来与大家分享,希望能起到抛砖引玉的作用. 项目目录结构 VC用解决方案(so

VS解决方案的目录结构设置和管理

一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档.除此以外,根据项目的需求,还会使用一些第三方的库. 所以为解决方案设置一个合理的目录结构,不但可以使得代码管理更井井有条,项目成员之间也更容易相互配合,更重要的是能够使得最终应用程序的安装包制作,源代码打包发布和转移变得十分容易. 解决方案与项目: 从VC6之后VC系列就使用解决方案(Solution)来替代原来的工作空间,用于组织和管理多个相关的项目(Proje

Visual Studio解决方案的目录结构设置和管理

摘至:http://blog.csdn.net/lp310018931/article/details/47991759 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系,假设新建一个项目ssyy,解决方案起名fangan,注意解决方案包括项 目,此时生成的最外层目录为fangan代表整个解决方案的内容都在这个文件夹内.在这个fangan文件夹内包含有fangan.sln的解决方案配置 文件和一个ssyy文件夹,ssyy

[Ecmall]ECMALL目录结构设置与数据库表

最近在做ecmall的开发,ecmall在开源方面还有待进步啊,官方没有提供开发文档,也没有关于系统架构组织的贡献,使用者都要自己从0开始,官方论坛连二次开发板块都没有,都在哪瞎扯淡,广告一堆.可悲~~~ 自己做了一张图片,根据ecmall的程序结构图,可以清楚的知道ecmall的五脏六腑. ECMALL数据库主要表 ecm_acategory:存放的是商城的文章分类. ecm_address:存放的是店长的地址 ecm_article:存放的是商城的相关文章 ecm_brand:存放的是商城的

Linux下ThinkPHP网站目录权限设置

在windows上运行好好的项目,迁移到Linux上就遇到了很多问题,其中最为重要的是网站目录权限的设置,当然简单期间你可以用 命令 "chmod 777 -R you web site" ,这样你就不用担心项目运行的时候会涉及到权限问题.通常来说如果你的项目时部署在公网或者是部 署在租用的Linux服务器上不建议这么做,应为如果这样设置了那么任何用户都可以对这个站点下的文件,目录进行操作,这样也会影响网站的运营, 同样不安全.下面以ubuntu14.4 系统为主进行分析. 最简单的做

MVVM 模式下iOS项目目录结构详细说明

?更多技术干货请戳:听云博客 我们在做项目的时候,会经常用到各种设计模式,最常见的要数 MVC (模型,视图,控制器)了.但是,今天我们要说的是另一种设计模式——MVVM. 所以 MVVM 到底是什么?下面,我们将结合代码,说明 MVVM 设计模式以及项目目录结构. 一.MVVM 模式介绍  MVVM 是 Model-View-View Model 的缩写,MVVM 听起来好像很复杂的样子,但它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和

Apache下禁止显示网站目录结构的方法

中午开发小哥跑来找我,给我一个网站地址,我点开后显示的是目录格式,把网站的目录结构全部显示出来了.开发小哥说这个显示结果不正确,不应该让用户看到我们的目录结构,问我怎么解决. 我第一反应是目录权限的问题,查看了一下网站目录的权限,发现权限是777,随后我把权限改为755,结果这个页面的确不能访问了,但是上级页面也跟着爆掉了,要知道,这可是线上环境啊,我当时那个汗就下来了,赶紧恢复了777的权限,上级页面又正常了,看来不是权限的问题(又长见识了). 这个时候我意识到可能是配置文件的问题了,然后正好

ECMALL目录结构设置与数据库表

最近在做ecmall的开发,ecmall在开源方面还有待进步啊,官方没有提供开发文档,也没有关于系统架构组织的贡献,使用者都要自己从0开始,官方论坛连二次开发板块都没有,都在哪瞎扯淡,广告一堆.可悲~~~ 自己做了一张图片,根据ecmall的程序结构图,可以清楚的知道ecmall的五脏六腑. ECMALL数据库主要表 ecm_acategory:存放的是商城的文章分类. ecm_address:存放的是店长的地址 ecm_article:存放的是商城的相关文章 ecm_brand:存放的是商城的

【系统知识点】linux目录结构

linux系统目录结构的基本特点介绍: (1)在逻辑上所有的目录都在最高级别的目录"/"下,根目录是linux系统中所有目录的起始点,根下面的目录及目录的子目录是一个有层次的树状结构,很像一颗倒挂着的大树,这和windows系统按照硬盘分区分割的目录结构是不同的(windows系统可以理解为多棵树,每个分区就是一颗独立的小数) linux系统中的这些不同的目录也是很特别的,不同的目录可以分布在不同的硬盘分区以及不同的硬盘设备上.这是windows系统难以做到的,windows系统的不同