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文件就可以把相关路径以宏的形式自动添加到环境变量中。下面给出我所配置的一些系统环境变量:
rem Windows命令行获取当前bat文件所在目录,添加永久系统环境变量的方法
rem 请注意用管理员权限运行该批处理文件,否则会出现find命令无法识别的错误 rem @ 关闭单行回显
@echo off rem 从本行开始关闭回显。一般批处理第一行都是这个 ver | find "4.0." > NUL && goto win_xp
ver | find "4.10." > NUL && goto win_xp
ver | find "4.90." > NUL && goto win_xp
ver | find "3.51." > NUL && goto win_xp
ver | find "5.0." > NUL && goto win_xp
ver | find "5.1." > NUL && goto win_xp
ver | find "5.2." > NUL && goto win_xp
ver | find "6.0." > NUL && goto win7
ver | find "6.1." > NUL && goto win7
ver | find "6.2." > NUL && goto win7
ver | find "6.3." > NUL && goto win8 :win_xp
rem 设置第三方库环境变量THIRD_PARTY
wmic ENVIRONMENT where "name='ALLPROJECT_THIRD_PARTY'" delete
wmic ENVIRONMENT create name="ALLPROJECT_THIRD_PARTY",username="<system>",VariableValue="%~dp03rdPart"
echo %ALLPROJECT_THIRD_PARTY% rem 设置ALLPROJECT_TRUNK环境变量ALLPROJECT_TRUNK,表示当前的源码主干目录
wmic ENVIRONMENT where "name='ALLPROJECT_TRUNK'" delete
wmic ENVIRONMENT create name="ALLPROJECT_TRUNK",username="<system>",VariableValue=%~dp0
echo %ALLPROJECT_TRUNK% rem 设置SDK环境变量ALLPROJECT_SDK_INC、ALLPROJECT_SDK_LIB和ALLPROJECT_SDK_DLL,暂时没用到
rem wmic ENVIRONMENT where "name='ALLPROJECT_SDK_INC'" delete
rem wmic ENVIRONMENT create name="ALLPROJECT_SDK_INC",username="<system>",VariableValue="%~dp0ALLPROJECT_SDK\include"
rem echo %ALLPROJECT_SDK_INC% rem wmic ENVIRONMENT where "name='ALLPROJECT_SDK_LIB'" delete
rem wmic ENVIRONMENT create name="ALLPROJECT_SDK_LIB",username="<system>",VariableValue="%~dp0ALLPROJECT_SDK\lib\"
rem echo %ALLPROJECT_SDK_LIB% rem wmic ENVIRONMENT where "name='ALLPROJECT_SDK_DLL'" delete
rem wmic ENVIRONMENT create name="ALLPROJECT_SDK_DLL",username="<system>",VariableValue="%~dp0ALLPROJECT_SDK\dll"
rem echo %ALLPROJECT_SDK_DLL% rem 设置exe输出路径
wmic ENVIRONMENT where "name='ALLPROJECT_BIN'" delete
wmic ENVIRONMENT create name="ALLPROJECT_BIN",username="<system>",VariableValue="%~dp0OutDir"
echo %ALLPROJECT_BIN% rem 设置临时文件输出路径
wmic ENVIRONMENT where "name='ALLPROJECT_INTDIR'" delete
wmic ENVIRONMENT create name="ALLPROJECT_INTDIR",username="<system>",VariableValue="%~dp0IntDir"
echo %ALLPROJECT_INTDIR% goto end :win7
@setx ALLPROJECT_THIRD_PARTY "%~dp03rdPart" -m @setx ALLPROJECT_TRUNK %~dp0 -m rem @setx ALLPROJECT_SDK_INC "%~dp0ALLPROJECT_SDK\include" -m rem @setx ALLPROJECT_SDK_LIB "%~dp0ALLPROJECT_SDK\lib" -m rem @setx ALLPROJECT_SDK_DLL "%~dp0ALLPROJECT_SDK\dll" -m @setx ALLPROJECT_BIN "%~dp0OutDir" -m @setx ALLPROJECT_INTDIR "%~dp0IntDir" -m goto end :win8
@setx ALLPROJECT_THIRD_PARTY "%~dp03rdPart" -m @setx ALLPROJECT_TRUNK %~dp0 -m rem @setx ALLPROJECT_SDK_INC "%~dp0ALLPROJECT_SDK\include" -m rem @setx ALLPROJECT_SDK_LIB "%~dp0ALLPROJECT_SDK\lib" -m rem @setx ALLPROJECT_SDK_DLL "%~dp0ALLPROJECT_SDK\dll" -m @setx ALLPROJECT_BIN "%~dp0OutDir" -m @setx ALLPROJECT_INTDIR "%~dp0IntDir" -m goto end :end
pause
这样以后自己的项目不管是学习还是测试用的一些代码都可以放在该解决方案里,方便统一管理,形成一个代码库。只是每次新建项目或添加项目的时候,需要配置项目的一些属性(Debug和Release可根据具体情况选择配置),以达到预期的结果,具体的配置方法即“项目属性配置文件.txt”里的内容,该文件里的内容如下:
项目属性配置: 说明:$(ConfigurationName) -- debug/release
$(ProjectName) -- 项目名称
配置属性(Debug和Release版都需要配置)
常规
输出目录:
$(ALLPROJECT_BIN)/$(ConfigurationName)
中间目录:
$(ALLPROJECT_INTDIR)/$(ConfigurationName)/$(ProjectName) 字符集:使用多字节字符集
C/C++
常规
附加包含目录:
$(ALLPROJECT_THIRD_PARTY)/boost_1_42_vc9/include
$(ALLPROJECT_THIRD_PARTY)/gdal_1_10_1_vc9/include
$(ALLPROJECT_THIRD_PARTY)/log4cplus_1_0_3_vc9/include 连接器
常规
附加库目录:
$(ALLPROJECT_THIRD_PARTY)/boost_1_42_vc9/lib
$(ALLPROJECT_THIRD_PARTY)/gdal_1_10_1_vc9/lib
$(ALLPROJECT_THIRD_PARTY)/log4cplus_1_0_3_vc9/lib 输入
附加依赖项
Debug
log4cplusD.lib
gdal_i_D.lib
boost_filesystem-vc90-mt-gd-1_42.lib
boost_regex-vc90-mt-gd-1_42.lib
boost_system-vc90-mt-gd-1_42.lib
libboost_filesystem-vc90-mt-gd-1_42.lib
libboost_system-vc90-mt-gd-1_42.lib
Release
log4cplus.lib
gdal_i.lib
libboost_system-vc90-mt-1_42.lib
libboost_filesystem-vc90-mt-1_42.lib
boost_system-vc90-mt-1_42.lib
boost_regex-vc90-mt-1_42.lib
VS下的解决方案目录结构设置和管理的更多相关文章
- [转]Vs解决方案的目录结构设置和管理
原文地址:[转]Vs解决方案的目录结构设置和管理 作者:大明 以下内容为“原创”+“转载” 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件夹以及解决方案和各个项目对 ...
- Vs 2008 解决方案的目录结构设置和管理(转)
http://blog.csdn.net/lcj_cjfykx/article/details/8632459 MS的这个IDE,实在庞杂得恐怖.从大学开始,我就一直用VC的各个版本写程序至今,细细想 ...
- VC 2005 解决方案的目录结构设置和管理
VC 2005 解决方案的目录结构设置和管理 Roger (roger2yi@gmail.com) 一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于 ...
- VS 解决方案目录结构设置
涉及到的配置: 项目编译时使用的中间目录: 项目链接的输出目录: 项目编译结束后,拷贝生成的 dll 和 lib 到指定目录: 项目编译结束后,拷贝需要的 dll 到输出目录: 设置项目的工作目录: ...
- 转: VS 解决方案目录结构设置
https://www.cnblogs.com/zuibunan/p/3843459.html 下面的文章也有介绍 https://blog.csdn.net/lp310018931/article/ ...
- VS解决方案的目录结构设置和管理
一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档.除此以外,根据项目的需求,还会使用一些第三方的库. 所以为解决 ...
- Visual Studio解决方案的目录结构设置和管理
摘至:http://blog.csdn.net/lp310018931/article/details/47991759 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件 ...
- Visual C++ 设置适合自己的解决方案目录结构
Visual C++ 使用解决方案来管理项目,项目之间还可能有依赖关系,设置适合自己的解决方案目录结构,便于代码的管理.程序的发布. 下面开始一个虚拟解决方案设计: 假设此解决方案有应 ...
- ECMALL目录结构设置与数据库表
[Ecmall]ECMALL目录结构设置与数据库表 最近在做ecmall的开发,ecmall在开源方面还有待进步啊,官方没有提供开发文档,也没有关于系统架构组织的贡献,使用者都要自己从0开始,官方 ...
随机推荐
- html代码中的form参数是基本一致的
由于pear的大多数模块仍处于开发当中,因此,这里列举的是随着php4.05一起发布的pear中的模块,需要注意的是,一些抽象类或者是基类(如mail.php,log.php,cache.php)没有 ...
- Android中如何解决输入法键盘和activity页面遮挡的问题
不希望遮挡设置activity属性android:windowSoftInputMode="adjustPan" 希望动态调整高度android:windowSoftInputMo ...
- cookie案例-显示用户上次访问网站的时间
package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.D ...
- maven使用本地jar包
引入本地jar包 方式一:将本地Jar包安装到本地仓库,再按常规方式引用 mvn install:install-file -Dfile=libs\tools.jar -DgroupId=com.su ...
- 代码规范[iOS]
一.文件系统 二.代码结构 三.常量 宏 四.布局方式 数据持久化 五.网络 六.类目.延展 七.内存.线程 八.其他 九.版本控制.上线相关 十.附录1(公共库) 十一.附录2(公共类目) 十二 ...
- jqGrid预定义的格式化类型formatter
下表列出了jqGrid中的预定义格式化类型 所有预定义类型和编辑模式兼容,就是说数字,链接和email等需要转换,才能使他们被正确编辑 类型 选项(默认值参考语言选项) 描述 integer thou ...
- Rewrite服务器和robots文件屏蔽动态页面
Rewrite服务器使用robots文件屏蔽动态页面.
- Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分
Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍. ...
- UE4中使用数据表(Data Table)
本文依据官方文档数据驱动游戏性元素整理而来. 做过游戏的应该都清楚,如果游戏稍微有点规模,那么使用数据驱动来做游戏一般是必不可少的一步,一般也就是策划通过本表的方式来解决.下面我们来简单说一下UE4中 ...
- (一)keil4 MDK 开发环境下编写裸机程序 (参考杨铸 北航) (开发板只需要连接JLNK 就行了)
首先用的是 keil4 位与 ( F:\ARM+LINUX\MDK-ARM_v4.10.exe ) 1. 新建工程名project 为 led circle ,放在 我的文档\ l ...