【问题标题】:Configure VS2010 to build a C++ project to a reasonably clean output directory?配置 VS2010 将 C++ 项目构建到一个相当干净的输出目录?
【发布时间】:2012-06-11 23:32:46
【问题描述】:

在 VS2010 中,一个使用默认项目配置的单行 hello world C++ 控制台程序将 30 多个中间构建文件文件输出到其输出目录。 Obj 文件、pch 文件、ilk、log、buildstate、idb、嵌入式 manifest 和 rc 文件以及不少于 18 个 tlog 文件。

这些都不是实际输出,对于 exe 控制台应用程序,真正输出的唯一文件是 exe 本身和 pdb 文件。

所以我的问题是:有没有办法配置 VS2010 将所有这些垃圾构建到中间目录中,并将有用的东西输出到输出目录?

【问题讨论】:

  • 它已经这样做了:如果您在 Visual Studio 2010 中创建一个新的 C++ 控制台应用程序项目并构建它,构建输出到两个位置:$(ProjectDir)\$(Configuration),其中包含中间构建文件,以及 $(SolutionDir)\$(Configuration),它包含三个文件:.exe、.pdb 和链接器增量链接所需的 .ilk(如果禁用增量链接,此文件将不会建造)。这种行为与您要求的行为有何不同?
  • 如果您没有单独的解决方案目录(如果解决方案只是一个项目,您为什么要这样做),它只会将所有内容直接转储到输出目录。也就是说,如果你有一个单独的目录来存放解决方案,它的行为会更合理,这仍然很有趣,所以谢谢。

标签: c++ visual-studio-2010 visual-c++


【解决方案1】:

在 Visual Studio 中,打开解决方案资源管理器,右键单击项目并选择属性... 在属性页对话框中,导航到配置属性 -> 常规。前两个属性控制构建输出的去向:

  • 输出目录:这是放置最终构建输出(.exe、.pdb、.ilk)的目录

  • 中间目录:这是放置(大多数)其他所有内容的目录。

如果您使用典型的项目布局,其中项目位于解决方案文件夹下的文件夹中,这些属性将被配置为使两个目录不同。当然,您可以将它们配置为将输出放置在您想要的任何位置。

【讨论】:

  • 我使用了这种技术,并且我进一步将 Intermediate 定义为 %TEMP%\$(SolutionName)\$(ProjectName)\$(ConfigurationName)——这使得 OBJ 等完全脱离了源代码树。
  • @MikeC - 不错的技巧,但您的意思不是:$(TEMP)\$(SolutionName)\$(ProjectName)\$(ConfigurationName)?
  • @bavaza - 如果 %TEMP% 不起作用,那么是的,你一定是对的;我不再在我设置的地方工作,因此无法检查。
【解决方案2】:

你可以去:

项目->属性->构建事件->预构建事件命令行

项目->属性->构建事件->构建后事件命令行

在这里您可以为您的所有清理或复制等操作提供命令行脚本。

【讨论】:

  • 不错的建议,但手动完成所有操作会很累。
  • 是的,但是如果 VS 中有一个隐藏功能可以在构建完成后删除所有这些文件,那就太棒了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
相关资源
最近更新 更多