繁体   English   中英

Visual Studio 2008下的C ++项目结构

[英]C++ project structure under Visual Studio 2008

所以,我已经做了很多年的Java,但现在我正在开始一个C ++项目。 我正在尝试确定设置该项目的最佳实践。

在项目中,您通常如何构建代码? 你是否使用命名空间文件夹来创建Java样式并以这种方式分解你的源代码? 您是否将公共标题保存在include目录中以便于引用?

我已经看到了提及的两种方式,但对于大型项目来说,什么是好方法?

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

我在这里也有一个相关但不同的问题。 我说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

我们倾向于使每个组件成为一个解决方案,包含一个或多个项目(或子组件)和一个测试项目。 测试项目包含所有单元测试。

然后,我们根据模块和组件将解决方案安排到树中,例如:

//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

树的深度可能更多,或更少,具体取决于组件/子组件的数量。 我们还倾向于在子系统和子组件级别具有一般可重用的东西的“通用”解决方案。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM