如何在 VSCode 中禁用来自 CPP 编译器的特定编译警告? (最好使用构建选项)

How to disable specific compilation warnings from CPP compiler in VSCode? (preferably using build options)

我正在使用 VSCode 和 ESP-IDF 对 Arduino 进行编程。一些 Arduino 库文件正在生成如下警告。

988/1135] Building CXX object esp-idf/arduino/CMakeFiles/__idf_arduino.dir/libraries/WiFi/src/WiFiScan.cpp.obj
/Users/sr/projects/gcp-iot/components/arduino/libraries/WiFi/src/WiFiScan.cpp:45:21: warning: 'const char* cipher_str(int)' defined but not used [-Wunused-function]
 static const char * cipher_str(int cipher)
                     ^~~~~~~~~~
[1003/1135] Building CXX object esp-idf/arduino/CMakeFiles/__idf_arduino.dir/libraries/WiFi/src/WiFiGeneric.cpp.obj
/Users/sr/projects/gcp-iot/components/arduino/libraries/WiFi/src/WiFiGeneric.cpp:187:21: warning: 'const char* auth_mode_str(int)' defined but not used [-Wunused-function]
 static const char * auth_mode_str(int authmode)
                     ^~~~~~~~~~~~~
[1013/1135] Building CXX object esp-idf/arduino/CMakeFiles/__idf_arduino.dir/libraries/Wire/src/Wire.cpp.obj
/Users/sr/projects/gcp-iot/components/arduino/libraries/Wire/src/Wire.cpp: In member function 'uint8_t TwoWire::requestFrom(uint16_t, uint8_t, bool)':
/Users/sriraj/projects/gcp-iot/components/arduino/libraries/Wire/src/Wire.cpp:363:15: warning: variable 'err' set but not used [-Wunused-but-set-variable]
     esp_err_t err = ESP_OK;

我曾尝试在多个地方设置 -Wno-unused-function 标志,但未能禁用这些警告。有人可以建议设置此构建选项的正确位置,这样我就看不到这些警告了。我在 MacOS 上使用 VSCode。提前谢谢你。

导航到您的 ESP-IDF 目录并在 esp-idf/tools/cmake 目录下查找 build.cmake 文件。

build.cmake 文件中 - 查找名为 function(__build_set_default_build_specifications) 的部分 - 这包含在构建时执行的所有默认编译器选项。在此处包含 -Wno-unused-function,保存并重新编译您的项目!

但请注意,这将在全局范围内禁用此警告并影响其他项目。