【问题标题】:Visual Studio Makefile Project makes extraneous 'obj' folderVisual Studio Makefile 项目生成无关的“obj”文件夹
【发布时间】:2012-09-24 00:43:31
【问题描述】:

我在 Visual Studio 2012 express 中使用 Makefile 项目就好了。但是,无论指定什么生成命令,Visual Studio 总是会创建一个包含空子文件夹 obj\Win32\Debug 和 obj\Win32\Release 的“obj”文件夹。

要重现该问题,只需创建一个“Visual C++ - 常规 - Makefile 项目”并在构建命令行中使用 DOS 命令,如“dir”。编译后,空的 obj\Win32\Debug 文件夹就会出现。

我可以在我的 Mercurial 忽略文件中简单地跳过这些,但如果能找到修复方法会很好。有谁知道如何让 Visual Studio 不生成这些空文件夹?

【问题讨论】:

标签: visual-studio makefile visual-studio-2012


【解决方案1】:

发现了一个技巧:在现有目录上设置中间输出目录。我手动修改了项目文件并添加了这个:

<IntermediateOutputPath>$(ProjectDir)</IntermediateOutputPath>

在配置PropertyGroup里面。我使用了显然已经存在的项目目录。没有更多无用的 obj 目录!

【讨论】:

    【解决方案2】:

    obj 文件夹代表 VS 自己的有关您的项目的元数据,用于智能感知支持和设计器支持(用于 WF/WPF 应用程序)。在大多数情况下,您可以完全忽略该文件夹而不会出现问题。

    有时,尽管此数据可能会损坏并导致 VS 显示无效的 Intellisense 选项,并且工作流/WPF 设计器可能会导致错误。关闭 VS 并删除 obj 文件夹将很快解决此问题。

    【讨论】:

    • 感谢您的回复。但是在这种使用外部构建工具的 Makefile 项目中,这个 obj 文件夹始终是空的。有没有办法将它重定向到中间目录? $(IntDir).
    • 很遗憾,没有,在 VS 中无法控制这种行为。它几乎也出现在每个项目类型中,因此它不仅限于 VC++ 应用程序。
    • 想一个不同的方法可以让你的构建工作在一个完全干净的目录中。默认情况下,构建将转到 bin/$(configuration),但您可以将其指向任何地方。也许将输出定向到项目空间之外的某个地方会是一种不错的方法?
    猜你喜欢
    • 2012-09-21
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2019-10-08
    相关资源
    最近更新 更多