项目源代码目录结构建议【原创】 .

项目源代码目录结构建议
为便于源代码的管理,提高源代码模块合成时的效率,避免浪费不必要的时间,对项目目录结构作以下建
 
注:本建议适用于多个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 深圳
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值