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

问题描述

我正在使用 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。先感谢您。

标签: c++visual-studio-codearduino-esp32

解决方案


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

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

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


推荐阅读