From 5dd0b43dfc92f0bfa6d039c6337577714561bcb1 Mon Sep 17 00:00:00 2001 From: SquallATF Date: Sat, 20 Sep 2025 22:29:10 +0800 Subject: [PATCH] Fix clang-cl warning flags: use `/W4` instead of `/Wall` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR fixes the warning flags when building with **clang-cl**. Previously, the CMake configuration unconditionally added `-Wall -Wextra` for Clang. However, according to the [clang-cl documentation](https://clang.llvm.org/docs/UsersManual.html#clang-cl), `/Wall` in clang-cl is mapped to `-Weverything`, which enables **all possible warnings**, far more than MSVC’s `/Wall`. This results in a flood of warnings that are not intended. The original intent was to match MSVC `/W4` (≈ `-Wall -Wextra` in GCC/Clang). --- CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a02433..9b5b1cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,7 +122,13 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.3.0) message(FATAL_ERROR "llvm/clang 3.3 or higher required!") endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") + if("${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") + add_definitions(-DUNICODE -DNOMINMAX) + set(CMAKE_DEBUG_POSTFIX _d) + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") + endif() elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") if(MSVC_VERSION LESS 1900) message(FATAL_ERROR "msvc 2015 or higher required!")