【问题标题】:How to suppress switch warnings in esp-idf and cmake如何在 esp-idf 和 cmake 中抑制开关警告
【发布时间】:2023-04-01 21:02:01
【问题描述】:

我有一个最初是为 Particle 设备编写的项目,我们正在从他们的设备转移到 ESP32。我一直在努力将我们的一个设备的代码移植到 esp-idf,现在收到大量与 switch 语句相关的警告,这些语句中没有默认值,因此无法编译。出于某种原因,无论 Particle 设备使用什么编译器都不关心这个问题。虽然我当然可以通过并更正代码,但这不是这样做的时间或地点,我需要禁止这些警告。最终我们会改正原代码并推送到这个fork。

../main/Services/ConfigurationParser.cpp:295:16: error: enumeration value 'psAmbientTemperature' not handled in switch [-Werror=switch]

我不太了解这个平台或编译器,不知道如何才能在以后抑制这些,并且无法在其他地方找到信息。非常感谢任何帮助。

【问题讨论】:

    标签: c++ cmake esp32 esp-idf


    【解决方案1】:

    ESP IDF 构建系统默认启用 GCC 选项 -Werror。这会导致 GCC 将所有警告视为错误。您需要告诉 CMake 将其反转,这需要添加 command line option to GCC

    假设您的带有警告的代码完全包含在名为“main”的组件中(这是默认值),只需编辑文件 main/CMakeLists.txt 并将下面的行添加到文件底部以仅禁止显示您的特定警告:

    target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-error=switch)
    

    或者这样可以阻止所有警告被视为错误:

    target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-error)
    

    【讨论】:

    • 在使用 main/CMakeLists.txt 文件中的任何一个时出现 CMake 错误:target_compile_options 命令不可编写脚本
    • 错误“target_compile_options command is not scriptable”是因为该行需要位于 idf_component_register 条目下方。感谢您的回答!
    • 很高兴听到,愉快的黑客攻击!
    猜你喜欢
    • 2017-08-01
    • 2021-12-28
    • 1970-01-01
    • 2019-02-25
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多