zoukankan      html  css  js  c++  java
  • 项目源代码目录结构建议【原创】 .

    项目源代码目录结构建议
    为便于源代码的管理,提高源代码模块合成时的效率,避免浪费不必要的时间,对项目目录结构作以下建
     
    注:本建议适用于多个DLL项目的解决方案
     
    整体结构
     
    解决方案整体目录结构应该是下面的样子(以数字录相机项目(DVR)为列):
    iWise_DVR---------build
              |
              |-------document 
              |
               --------bin-------debug
              |            |  
              |             -----release
              |
               --------lib-------debug
              |            |  
              |             -----release
              |
              | -------include---projectA
              |               |
              |               |--projectB
              |               |
              |               |--projectC
              |
               -------projectA
              |
              |
               -------projectB
              |
              | 
               -------projectC
     
    注:图中的ProjectA ProjecB ProjectC应为相应的真实项目名称
     
    Build目录结构
    Build为存放VC编译时产生的中间文件的地方 .
    build-------projectA--------debug
          |                |
          |                 ----release
           -----projectB--------debug
          |                |
          |                 ----release
           -----projectC--------debug
                           |
                            ----release
    例如:当新建了ProjectA时,应该在 项目->项目属性->常规选项卡中将输出目录和中间目录都设置成 ../build/ProjectA/Debug 并将Release版本设置  ../build/ProjectA/Release
    Bin目录
    Bin目录存放程序可执行文件,包括所有模块输出的DLL文件
    由于一般程序开发都有两个版本 Debug Release 因此Bin里面就有了这两个目录 .
    bin------------debug
            |
             ------release
     
    例如:当新建了ProjectA时,应该在 项目->项目属性->链接器->常规选项卡中将输出文件设置成 ../bin/Debug/$(ProjectName).exe 并将Release版本设置为 ../bin/Release/$(ProjectName).exe
    Include目录
    Include目录存放各个项目导出的头(.H)文件 .
    include--------projectA
             |
              -----projectB
             |
              -----projectC
    例如:需要使用项目AProjectA)头文件的项目应该在 项目->项目属性->C/C++->->附加包含目录添加../include/ProjectA
      另外,项目A的导出头文件不应该在整个iWise-DVR目录中出现 两份(以上),也就是说项目A也需要使用../include/ProjectA目录下的头文件,那么也按照上述方法设置附加包含目录。
    **********************************************
    **********************************************
    **********************************************
    **********************************************
    **********************************************
    **********************************************
               iWise dvr 策略模块总结:(VS2003.Net)
    1.创建工作空间,建立目录结构
    Bin
    build
    doc
    Include
    Lib
    projectA
    projectB
    projectTestA
    projectTestB
    2.创建子项目模块:选择“MFC DLL”的“MFC扩展DLL”
    3.dll中需要使用ado,在DllMain的
    DLL_PROCESS_ATTACH,DLL_PROCESS_DETACH,
    DLL_THREAD_ATTACH,DLL_THREAD_DETACH
    分支加入:
      if(FAILED(::CoInitialize(NULL)))
      {
       AfxMessageBox("com init failed");
       return 0;
      }
    ::CoUninitialize();
    3.1关闭工程,拷贝头文件到相应目录中去。
    3.2打开工程属性,选择“配置属性”的“常规”,输出目录和中间目录改为如下格式的:
    ../build/StragetyProject/Debug
    3.3“C/C++”页的“常规”的“附加包含目录”,填入如下格式:
    ../Include/StragetyProject
    添加头文件到项目中---》“添加现有项”
    3.4预处理器定义,添加“_VIDEORECORD_STRATEGY_EXT”
    3.5连接器的“常规”的“输出文件”改为如下格式:
    ../bin/debug/strategy.dll(说明:如果此处修改默认的dll文件名,则需要修改def文件)
    3.6连接器的高级的导入库改为如下格式:../lib/debug/Strategy.lib
     
    4.在子项目中添加类或现有文件
    #ifdef _VIDEORECORD_STRATEGY_EXT
     #define VIDEORECORD_STRATEGY_API       __declspec(dllexport)
    #else
     #define VIDEORECORD_STRATEGY_API       __declspec(dllimport)
    #endif
    /****************************************************
     * 包含头文件
     ****************************************************/
    class CVideoRecordStrategyPrivate;//代理实现类
    /****************************************************
     * 类定义
     ****************************************************/
    class VIDEORECORD_STRATEGY_API CVideoRecordStrategy
    {
        ……;
    };
     
    定义_VIDEORECORD_STRATEGY_EXT
    //不推荐使用:class export:AFX_EXT_CLASS
    5.上面讲述的是debug版本的,release相同设置。
    6.测试程序或主程序应用
    6.1“配置属性”“常规”的“输出目录”和“中间目录”改为如下格式:
    ../Build/TestProject/Debug
    6.2“配置属性”“调试”的“工作目录”改为:
    ../Bin/debug
    6.3“C/C++”“常规”的“附加包含目录”改为如下格式:
    ../Include/StragetyProject
    6.4连接器“常规”的“输出文件”改为:
    ../bin/debug/$(ProjectName).exe
    6.5连接器“常规”的附加库目录改为如下:../Lib
    6.6连接器“输入”的“附加依赖项”如下:test1.lib多个文件之间用空格隔开,
       某个文件名中有空格时,每个文件加引号再用空格
    6.7设置项目的依赖项
    6.8设置启动项目
     
    7.例子,测试dll中添加一个函数:
    int test_class::test_foo(void)
    {
     ::MessageBox(NULL,"aaa","aabb",MB_OK);
     return 0;
    }
    测试程序或主程序中添加
    #include "dll_class.h"
    test_class _test;
    _test.test_foo();
     
     

    2004-11-01 18:03 深圳
  • 相关阅读:
    php 日期处理 DateTime
    http范围请求
    fiddle扩展
    汉字编码 (GB2312 GBK GB18030)
    Navicat http 通道增加验证
    vim 支持 nginx配置文件 语法高亮
    composer 使用
    剖析nsq消息队列(三) 消息传输的可靠性和持久化[一]
    剖析nsq消息队列(二) 去中心化源码解析
    剖析nsq消息队列(一) 简介及去中心化实现原理
  • 原文地址:https://www.cnblogs.com/jinsedemaitian/p/5589136.html
Copyright © 2011-2022 走看看