在 MS Visual Studio 2013 中构建多个项目

Posted

技术标签:

【中文标题】在 MS Visual Studio 2013 中构建多个项目【英文标题】:Building multiple projects in MS visual studio 2013 【发布时间】:2021-08-13 15:25:22 【问题描述】:

我有一个 MS Visual Studio 13 解决方案,其中包含许多(约 20 个)项目。 项目共享一些源代码文件。

我不知道如何一次构建所有项目。当我选择它们并执行Build > Build selection 或只是Build > Build solution 时,Visual Studio 会抛出这样的错误:

Error 249 error C1083: Cannot open compiler generated file: 'x64\Release\blabla.obj': Permission denied D:\xxx\yyy\src\blabla.cpp 1 1 Project001

可能是因为该特定文件同时由多个项目编译。 如果我一个接一个地构建所有项目,一切都很好,但这是令人讨厌的工作。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

VS 有一种方法可以指定解决方案中项目的构建顺序(在解决方案资源管理器中右键单击解决方案)如果项目 A 依赖于项目 B,那么您可以指定它,然后项目将按照您期望的顺序构建.

【讨论】:

有没有办法简单地说一次只编译一个项目?因为没有明确的项目顺序。每个项目中可能包含 cpp 文件。 如果你不能弄清楚项目的正确顺序,你就会遇到更大的问题(即,你总是会遇到构建错误。)在多个项目中使用相同的 CPP 应该不是问题,它只会建造两次。确保您的中间文件夹不会在项目之间重叠,因为这可能会导致问题。 就是这样。问题是重叠的中间文件夹!非常感谢。 (如果您更新您的初始答案,我将接受它作为最终答案)【参考方案2】:

我想知道您是想一次构建所有项目还是一次只编译一个项目?

当您运行一个项目时,VS 会自动执行所有必要的构建以运行您的启动项目。它还将根据依赖关系树为您确定此顺序。在大多数情况下,您不需要编辑它。 VS 允许您通过编辑依赖项来做到这一点。右键单击您的项目并选择 Build Dependencies > Project Build Order 以查看当前的构建顺序并编辑您的依赖项,这将影响构建顺序。

更多详情我建议你可以参考链接:https://docs.microsoft.com/en-us/visualstudio/ide/how-to-create-and-remove-project-dependencies?view=vs-2019

【讨论】:

我需要一次编译所有项目(一键式),不一定同时编译。我的项目不相互依赖。他们只是共享一些源文件。我觉得问题是几个项目并行编译,然后同一个源文件被两个项目同时编译。 我建议你可以尝试使用/MP。【参考方案3】:

问题是我的许多项目共享同一个命名空间。

在为所有项目设置唯一的 RootNamespace 之后,一切正常。

这是在 *.vcxproj 文件中找到它的位置

  <PropertyGroup Label="Globals">
    <ProjectGuid>85936F95-D218-4D69-B8F2-684C2A86F850</ProjectGuid>
    <RootNamespace>THIS_MUST_BE_UNIQUE</RootNamespace>
  </PropertyGroup>

【讨论】:

以上是关于在 MS Visual Studio 2013 中构建多个项目的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2013 中使用 MS Access (C#) 生成发票

在 MS Visual Studio 2013 中,我可以使用啥来代替 std::aligned_alloc?

Visual Studio 2013 错误 MS8020 Build tools v140 找不到

Visual Studio 2013 与 MS SQL Server 2014 不兼容

MS Visual Studio 2013 MFC 应用程序:为消息/输出服务创建文本框

如何在 MFC 中支持多种文档类型,例如 MS Office 应用程序或 Visual Studio