Visual Studio 2008下的C ++项目结构
题
所以,我已经做了很多年的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