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

Posted

技术标签:

【中文标题】Visual Studio 2008下的C++项目结构【英文标题】:C++ project structure under Visual Studio 2008 【发布时间】:2008-11-06 00:19:46 【问题描述】:

所以,我已经从事 Java 多年了,但现在我开始了一个 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 在我们的沙箱中构建和链接。我们有一个单独的“发布”沙箱,以确保我们不会意外链接错误的库。

【讨论】:

【参考方案2】:

我在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

【讨论】:

以上是关于Visual Studio 2008下的C++项目结构的主要内容,如果未能解决你的问题,请参考以下文章

如何在visual studio2008中创建,编译和运行C++程序,

Visual Studio 2008 中的 C# 项目中的 C++ 项目参考

如何将 C++ Visual Studio 2008 项目降级到 2005

将 C++ Win32 控制台项目类集成到 Visual Studio 2008 中的 Visual C++(Windows 窗体应用程序)项目中

解读将 Visual C++ 6 项目升级到 Visual Studio 2008 时出现的错误

Visual Studio 2008 Profiler - C++ 库问题