Com*_*sMS 11 c++ cmake compiler-warnings
如何配置 CMake 以将编译器警告视为构建期间的错误?
我知道可以-Werror通过诸如 之类的命令手动配置编译器的命令行选项target_compile_options,但我更喜欢不需要摆弄依赖于工具的选项的便携式解决方案。
Com*_*sMS 11
这可以在 CMake 3.24 及更高版本中通过COMPILE_WARNING_AS_ERRORtarget 属性进行配置。
例如,要为my_app目标启用警告作为错误,您可以编写:
set_property(TARGET my_app PROPERTY COMPILE_WARNING_AS_ERROR ON)
Run Code Online (Sandbox Code Playgroud)
您还可以通过变量为项目中的所有目标设置全局默认值CMAKE_COMPILE_WARNING_AS_ERROR:
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
add_executable(my_app1 [...])
add_executable(my_app2 [...])
add_executable(my_app3 [...])
Run Code Online (Sandbox Code Playgroud)
如果用户觉得 CMakeLists.txt 文件中的设置很烦人,他们仍然可以使用--compile-no-warning-as-error配置选项覆盖它。