gpt4 book ai didi

c++ - Visual Studio中组织C++代码的原则是什么?

转载 作者:行者123 更新时间:2023-11-30 05:32:05 26 4
gpt4 key购买 nike

我是一名新职位的经验丰富的 C++ 开发人员。我的经验是在基于 *nix 的系统中工作,而且我是第一次使用 Visual Studio。

我发现我一直在使用 Visual Studio 来处理我认为微不足道的事情。我觉得我还没有理解我应该如何使用 VS;所以我尝试“按照我习惯的方式”做事,这让我陷入了尴尬的变通办法、浪费的时间和不断的挫败感。我不需要 VS 101 教程;我需要的是某种转换指南 - “这是 VS 的做事方式。”

这是我的一般性问题——“VS 的做事方式是什么?”。这可能有点含糊,所以我将描述是什么让我感到悲伤。理想情况下,我不是在寻找“这是执行特定操作的一组特定步骤”,而是“您看错了;这是有效使用 VS 需要了解的术语和概念。”


在 C++ 中,我习惯于对代码组织和构建过程进行很大程度的控制。我觉得 VS 在这里对我不利:

  • 我强烈倾向于编写小的、孤立的构建 block ,然后编写更大的 block ,将这些 block 以不同的组合组合在一起。
    • 作为一个简单的例子,对于一个给定的单元或项目,我强调在单元的标题之间有很强的分离,以便客户包含;单位实际执行情况;以及任何测试代码。
    • 我可能有多个不同的测试项目,其中一些可能依赖于通用测试代码(超出被测代码本身)。
  • VS 使得实际控制代码位置变得很困难。如果我想将一个项目的代码分成一个include/ 文件夹和一个src/ 文件夹,那现在是一个严重的麻烦。
  • 据我所知,VS 的“项目”概念似乎介于我认为的“最终构建目标”和“中间构建目标”之间。据我所知,基本上我想在多个项目之间共享的任何内容都必须也是一个项目。
    • 但如果许多中间对象现在变成了项目,那么我突然发现自己手头有一大堆小项目。
    • 管理大量小项目非常令人沮丧。它们每个都有一百万个设置和定义(在多种配置和平台下......),从一个项目转移到另一个项目真的很痛苦。
    • 这鼓励我将大量不相关的代码集中在一个项目中,只是为了减少我需要管理的项目数量。

一直在为此苦苦挣扎。我可以为任何给定的事情找到解决方案,但我很清楚,我缺少对 Visual Studio 作为一种工具意味着的使用方式的更广泛理解。称之为正确的工作流程或正确的项目组织 - 任何解决方案或建议都会对我有真正的帮助。

(注意,尽管我很愿意,“停止使用 Visual Studio 构建链”目前不是一个选项。)

最佳答案

基本规则是:一个项目产生一个输出文件 [1]。

如果要将构建 block 打包成静态库,请为每个构建 block 创建一个项目。

单元测试与代码是分开的,因此通常会同时看到“foo”和“foo test”项目。

关于你的小积木,我使用这个准则:如果它足够密切相关可以放在同一个文件夹中,它也足够密切相关可以放在同一个项目中。

And managing a ton of small projects is incredibly frustrating. They each have a million settings and definitions (under multiple configurations and platforms...) that are a real pain to transfer from one project to the other.

属性页就是为了解决这个问题。只需定义一个包含相关设置和定义的属性页,就像将属性页添加到新项目一样简单。

由于每个项目都可以从多个属性页中提取其设置,因此您可以将它们分组到逻辑组中。例如:一个“单元测试”属性页,其中包含与单元测试框架相关的所有设置。

要在 Visual Studio 2015 中创建属性页:在 View 菜单中,有一个选项“属性管理器”。您将获得解决方案的不同 TreeView ,其中包含项目,然后是配置,然后是该项目+配置组合的所有属性页。配置的上下文菜单具有创建新属性页或添加现有属性页的选项。


[1] 虽然在 foo.dll 中有 Release 配置结果而在 food.dll 中有 Debug 配置结果是很常见的,所以它们可以并存而不必求助于 Debug/和 Release/文件夹。在常规属性中,将 TargetName 设置为“$(ProjectName)d”(对于调试配置)并从 OutputDirectory 中删除“$(Configuration)”(对于所有配置)以实现此目的。

关于c++ - Visual Studio中组织C++代码的原则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35289522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com