2008-11-06 158 views
3

所以,我已经做了很多年Java,但现在我开始了一个C++项目。我正在努力确定设立该项目的最佳实践。Visual Studio 2008下的C++项目结构

在这个项目中,你通常如何构造他们的代码?你用名称空间文件夹来做Java风格并以这种方式分解源代码吗?你是否将公开的头文件保存在包含目录中以便于引用?

我见过这两种方法和其他提到的方法,但对于一个大型项目来说,什么是一个好方法?

另外,如何处理应用程序结构中的资源/文件夹?对于最终的项目来说,安装log文件夹用于存储日志,可能是lib文件夹用于库文件,或者data文件夹用于数据,但是您如何管理项目中的这些位呢?有没有一种方法来定义它,所以当你构建解决方案时,它会为你构建结构?或者,您是否只需进入内置的配置文件夹(Debug,Release等),并手动构建文件结构,从而确保您的EXE文件所期望的路径正确定位?

回答

1

我们往往使各成分的溶液,含有一种或多种项目(或子组件)和测试项目。测试项目包含所有的单元测试。

然后我们安排解决方案集成到基于模块和组件树,例如:

//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution 

该解决方案将随后包含多个Visual Studio项目:

//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/Something 
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/SomethingElse 
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/TestTheSolution 

可能有更深入到树或更少,这取决于组件/子组件的数量。我们还倾向于在子系统和子组件级别上使用一般可重用的“常规”解决方案。

然后,我们有一个子系统级解决方案,它将所有东西联系在一起构建子系统。

我们不使用或导出到“包含”目录。我们让Visual Studio在我们的沙箱内建立并链接。我们有一个单独的“发布”沙箱,以确保我们不会无意中链接错误的库。

1

我有一个相关的,但不同的问题也在here以上。我说nmake,但它真的是任何生成系统:Scons,Bakefile,nmake,Ant,vcproj

我通常构造我的代码的方式是通过应用程序或DLL中的“模块”。我没有倾向于使用命名空间,但这并不意味着你不应该这样做。

在IDE中我有这样的事情:

/solution 
    /prj1 
     /headers 
     /module1 
     /module2 
     /resource 
     /source 
     /module 1 
     /module 2 
     /test 
    /prj2 
     /headers 
     /module1 
     /module2 
     /resource 
     /source 
     /module 1 
     /module 2 
     /test 

在文件系统上我有这样的事情:

/solution 
    /prj1 
     /bin 
     /build 
     /include 
      /module1 
      /module2 
     /lib 
     /res 
     /src 
      /module1 
      /module2 
     /test 
    /prj2 
     /bin 
     /build 
     /include 
      /module1 
      /module2 
     /lib 
     /res 
     /src 
      /module1 
      /module2 
     /test 
相关问题