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 窗体应用程序)项目中