zoukankan      html  css  js  c++  java
  • 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_SDKinclude"
    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_SDKlib"
    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_SDKdll"
    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_SDKinclude" -m
    61 
    62 rem @setx ALLPROJECT_SDK_LIB "%~dp0ALLPROJECT_SDKlib" -m
    63 
    64 rem @setx ALLPROJECT_SDK_DLL "%~dp0ALLPROJECT_SDKdll" -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_SDKinclude" -m
    78 
    79 rem @setx ALLPROJECT_SDK_LIB "%~dp0ALLPROJECT_SDKlib" -m
    80 
    81 rem @setx ALLPROJECT_SDK_DLL "%~dp0ALLPROJECT_SDKdll" -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         
  • 相关阅读:
    Counting Stars hdu
    Color it hdu
    steins;Gate
    原根
    3-idiots
    Tree
    洛谷P1352 没有上司的舞会
    洛谷P1131 时态同步
    洛谷P3177 树上染色
    Codeforces Round #617 (Div. 3)
  • 原文地址:https://www.cnblogs.com/chechen/p/6070583.html
Copyright © 2011-2022 走看看