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

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

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

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

有帮助吗?

解决方案

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

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

//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在我们的沙箱中构建和链接。我们有一个单独的“发布”版本。沙箱确保我们不会意外地链接错误的库。

其他提示

我有一个相关的,但不同的问题正在进行这里。我声明了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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top