3

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

在项目中,您通常如何构建他们的代码?您是否使用命名空间文件夹执行 Java 风格并以这种方式分解您的源代码?您是否将公共标头保存在包含目录中以便于参考?

我已经看到了这两种方法和其他方法,但是对于大型项目来说,什么是好的方法?

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

4

2 回答 2

1

我在这里也有一个相关但不同的问题。我说的是 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
于 2008-11-06T00:33:49.000 回答
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 在我们的沙箱中构建和链接。我们有一个单独的“发布”沙箱,以确保我们不会意外链接错误的库。

于 2008-11-06T00:46:28.177 回答