【问题标题】:Visual Studio from command line generates warnings; IDE does not命令行中的 Visual Studio 生成警告; IDE 没有
【发布时间】:2012-01-05 21:52:33
【问题描述】:

我在 Windows XP 系统上使用 Visual Studio 2005(32 位)。我有一个从命令行(在批处理文件中)构建的 C++ 项目,它使用 devenv.exe 来启动构建。以下是它如何启动的示例:

{path_to_devenv.exe} my_solution.sln /rebuild "Debug|Win32" /out my_logfile.txt

在这个项目的代码中,我们使用了一些 pragma 语句来禁用一些我们不想看到的无关警告:

#pragma warning ( disable : 4521 4522 )
// Some code here
#pragma warning ( default : 4521 4522 )

当项目在 IDE 的 debug 配置中构建时,这些警告不会显示在构建输出中。当从命令行构建同一个项目时,警告 do 会显示在我们的日志文件中(我们使用 /out 命令行参数指定)。在发行版中构建时,在任何一种情况下都不会显示警告。

通过 devenv.exe 驱动 VS 2005 有什么不同导致在调试情况下忽略编译指示?为什么这些警告会出现在一个世界而不是另一个世界?

【问题讨论】:

    标签: c++ build batch-file visual-studio-2005


    【解决方案1】:

    坦率地说,我看到这种情况发生的唯一原因是没有看到编译指示。

    检查

    • 构建配置(您是否也在 IDE 中构建 Debug|Win32?)
    • 尤其是包含路径(它们是否相同;也许看看环境是否包含其他设置)
    • 您是否在 IDE 中进行完全重建?我不排除您通常在 IDE 中看不到警告,因为您通常执行增量构建并且不需要相关源建成。检查在 IDE 中执行完整的 rebuild 时是否遇到相同的错误

    如果您迫切需要线索,您可以随时保留使用这两种变体的预处理结果并进行比较。 “保留预处理源”选项隐藏在“预处理器”C++ 构建设置下的某处。

    祝你好运

    【讨论】:

    • 感谢您的提示。(1) 我很肯定我正在 IDE 中构建与命令行相同的配置。 (2) 两种配置中的包含路径是相同的(事实上,我区分了两种配置以查看发生了什么变化)。 (3) 在这两种情况下,我都在进行全面重建。 “保留预处理源”选项很有帮助;两种变体都是相同的。现在,当我从命令行旋转构建时,我看不到警告。也许日志文件被附加到?也许它是间歇性的?无论哪种方式,这些提示都是有帮助的。谢谢!
    • 我刚刚回答了我自己的问题。我们的日志文件被附加到。我看到的警告来自旧版本。我真是个白痴!
    • 你好!无论如何感谢您的反馈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2011-02-10
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多