【问题标题】:Visual Studio 2012 - some 'inherited values' I want to get rid ofVisual Studio 2012 - 我想摆脱的一些“继承值”
【发布时间】:2012-10-21 21:46:58
【问题描述】:

我想知道如何在 Visual Studio 2012 的属性页中处理“继承的值”。在我的项目中,我决定要使用预编译的头文件,所以很自然地,我尝试从扩展列表中删除 *.pch 以在 Clean 上删除。但是,当我尝试编辑此属性时,它在许多其他扩展中被列在只读的“继承值”框下。

“从父级或项目默认值继承”未勾选,但没有区别。尽管如此,当我清理解决方案时,我的 .pch 文件被删除了。

提前致谢。

【问题讨论】:

    标签: winapi visual-c++ visual-studio-2012


    【解决方案1】:

    如果您使用传统的 PCH 语义设置 PCH,则使用一个文件来生成 PCH(通常是 stdafx.cpp),其余的源文件将从该创建中受益。如果是这种情况,那么您遇到的是删除“创建者”源的 .obj 强制重建“生成器”.cpp 文件,这意味着 PCH 也将被重建。PCH 是隐式的添加到“生成器”源的输出目标中,根据定义,当给定源目标被“清理”时,所有输出目标都会被删除

    换句话说,PCH 正在重建,因为生成它的源文件也在重建,因为 Clean 删除了生成 .obj 的源文件。

    顺便说一下,这是干净的预期行为。

    【讨论】:

    • 好的;但是 .pch 文件是当您将其设置为“使用 /Yu”时编译器将查找的文件,对吗?我知道删除此文件是默认行为,但如果我可以通过更改 clean 命令的默认行为来阻止它被删除,我的问题肯定会得到解决?
    • 你的设置和我上面描述的一样吗? IE。您是否有一个源文件被标记为“创建”而其余的源文件被标记为“使用”?如果是这样,那么当创建者源被“清理”时,根据定义,PCH 已经过时,因为必须重新编译创建者。我希望这是有道理的。将 PCH 标记为 not-cleaned-by-delete 不会有任何好处,因为生成它的源已经与其预期目标(它的 obj 文件)过时。由于必须重建 obj,并且生成它的源是 PCH 创建者,因此 PCH 也应重建。
    • 对不起,我误解了整个过程。我没有正确设置它,现在看了你的解释,以及 Visual Studio 中包含的示例项目,我知道它是如何工作的。现在一切都很好,感谢您的解释。
    猜你喜欢
    • 2011-09-03
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 2010-09-21
    • 1970-01-01
    • 2011-08-12
    相关资源
    最近更新 更多