I was just about to write a mail with similar content than this one, so allow 
me to add my 5 cents.
Fear of reyling on defaults in case Microsoft decides to change them?
1) Defaults don't change often. BTW, don't we rely on defaults for GCC and 
Clang anyway?2) Defaults change to benefit users. If the default changes from 
/W3 to /W4 per say, it would be because windows.h headers and the STL would be 
cleaned up for the warnings in /W4 and MS felt that it would be better if users 
relied on all the warning they packed there. (Currently it is not the case)
As for having to call string() on CMAKE_CXX_FLAGS to up my warning level for a 
single compiler... these sort of idiosincrecies are the ones that drive people 
away from CMake to Meson and other, more modern build systems. Not being able 
to clean up decades worth of sediments in script style will result in CMake's 
demise.

if (MSVC)  string(REGEX REPLACE "/W[0-9]""" CMAKE_CXX_FLAGS 
${CMAKE_CXX_FLAGS})endif (MSVC) add_executable(${PROJECT_NAME}main.cpp) 
target_compile_options(${PROJECT_NAME}PRIVATE$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wall-Wextra
 -pedantic>                                          
$<$<CXX_COMPILER_ID:MSVC>:/W4>) 
Instead of
 add_executable(${PROJECT_NAME}main.cpp) 
target_compile_options(${PROJECT_NAME}PRIVATE$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wall-Wextra
 -pedantic>                                          
$<$<CXX_COMPILER_ID:MSVC>:/W4>)
Or even
add_executable(${PROJECT_NAME}main.cpp)
set_target_properties(${PROJECT_NAME}PROPERTIES WARNING_LEVEL HIGH)
is nonsense. There should be direct support for a few pre-defined, commonly 
accepted warning levels. If not this, having to explain to C++ freshmen why 
we're running regexes over lists default args to clean them up BEFORE even 
stating our bussiness...


Please, remove this default because it hurts CMake as a whole.
Cheers,Máté

-----Original Message-----
From: Mateusz Loskot <mate...@loskot.net>
To: marc.chevrier <marc.chevr...@gmail.com>
Cc: cmake-developers <cmake-develop...@cmake.org>; cmake <cmake@cmake.org>
Sent: Sun, Dec 9, 2018 2:55 pm
Subject: Re: [cmake-developers] [CMake] [MSVC] Setting warning level on target 
feels like long-time bug

On Sun, 9 Dec 2018 at 14:09, Marc CHEVRIER <marc.chevr...@gmail.com> wrote:
>
> I think the discussion is shifting from the initial problem which was 
> unwanted warning « Command line warning D9025: overriding '/W3' with '/W4' ».

I disagree with your opinion.
Fixing just the warning would be a symptomatic treatment.

> Changing defaults is not a good idea from my point of view because relying on 
> defaults can be problematic if Microsoft decide to change the default 
> behaviour.

Although I think it is a long shot at something that is (highly)
unlikely to change, YAGNI consideration,
I understand CMake developers may be reluctant to change the long-time defaults.

> The real question is how to manage cleanly target specific flags overriding 
> global or directory defaults?

>From end-user point of view (I have not checekd CMake implementation),
I'd either do not explicitly set -W defaults or strip any -W option
prior re-setting
with (possibly) new value passed to target_compile_options.

Best regards,
-- 
Mateusz Loskot, http://mateusz.loskot.net
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake-developers
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to