В современном CMake хорошо работает следующее:
if(MSVC)
target_compile_options(${TARGET_NAME} PRIVATE /W4 /WX)
else()
target_compile_options(${TARGET_NAME} PRIVATE -Wall -Wextra -pedantic -Werror)
endif()
Заменить ${TARGET_NAME}
на фактическое имя цели. -Werror
является необязательным, он превращает все предупреждения в ошибки.
Или используйте add_compile_options(...)
, если хотите применить его ко всем целям, как предложено @aldo в комментариях.