c++ - 你如何组合大型 C++ 项目的组件?

标签 c++ visual-studio project-management

<分区>

我有一个问题,关于应该管理包含许多组件的大型 C++ 项目(我想这是最好的术语)。出于所有意图和目的,我是一名初级程序员。我了解编译、头文件等的基础知识,但我从未真正做过比家庭作业更重要的事情。因此,让我们以具有内存管理器、渲染器、物理模拟等各种组件的游戏引擎为例。一个人如何单独处理这些组件,但又能以一种易于集成回整体的方式?例如,你会为每件作品制作一个单独的 visual studio 项目吗?如果你有一个包含所有内容的大项目,你将如何在一个组件上工作而不可能有另一个未完成的组件导致它每次编译都失败?我觉得我缺少一些主要概念。比如,对于有多个程序员的项目,他们必须检查要处理的部分……他们是获取所有代码以便进行编译,还是建立自己的临时项目来处理他们的工作?这两个选项听起来都不对。你必须要有一个 main 函数才能编译吗?

我非常感谢任何人就此主题对我进行教育,因为我觉得这是我应该拥有的东西,但不知何故完全错过了。

最佳答案

当您使用较大的程序时,通常有一个源文件和一个主程序,其余的(可以有很多源文件)从主程序调用。然后你需要一个构建策略。您可以编写一个脚本文件来编译每个源文件,然后将它们链接在一起。不幸的是,这会导致构建时间过长,因此专业程序员使用 make 文件来只重建发生变化的文件。 作为进一步的改进,您可以将源代码组组织到库中并单独构建库,然后将它们与剩余的已编译源文件链接。

尝试查找 gmake(适用于 Linux)以了解如何构建更大的项目。我猜您使用的是 Microsoft VC++,在这种情况下,编译后的文件具有 .obj 扩展名,库具有 .lib 扩展名。 Microsoft 有自己的构建库的方法,它比使用 gmake 稍微复杂一些。

当你进一步观察时,你会遇到共享库(Windows 上的动态链接库 - DLL)。

关于c++ - 你如何组合大型 C++ 项目的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19623978/

相关文章:

project-management - 如何确保在重大发展里程碑之后保持势头?

c++ - 减少具有相同优先级的线程之间的上下文切换

c++ - 获取流程描述

c++ - 如果我使用 startDetached 启动 QProcess,我会得到一个完成的插槽吗

c# - Visual Studio C# 无法创建新的 Windows 窗体项目

c# - MSBUILD 宏文档?

c++ - 我需要将什么时间函数与 pthread_cond_timedwait 一起使用?

c# - VS2008 调试器是否保留超出范围的对象?

Linux 中通过 Emacs/Vim 进行 Haskell 编码 : organising files into projects

project-management - 您如何根据不断变化的需求管理客户?