[cmake-developers] [CMake] [MSVC] Setting warning level on target feels like long-time bug

Mateusz Loskot mateusz at loskot.net
Sun Dec 9 07:31:39 EST 2018


On Sun, 9 Dec 2018 at 12:14, Craig Scott <craig.scott at crascit.com> wrote:
>
> From what I understand from a very limited quick search just now,
> it seems that /W3 is the default warning level for Visual Studio

Yes, it is the default level indeed.

> but CMake explicitly adds it as a default compiler flag in CMAKE_<LANG>_FLAGS_INIT.
> This makes me wonder if it has always been the default, otherwise it isn't clear why it was deemed necessary to add it.

Yes, I'd suspect it was added as 'just in case'  too eagerly.

> More to the point, unless there's a reason not to, perhaps we could consider removing it from the default flags CMake sets.
> I think this would largely address the situation you're describing and shouldn't actually change the behavior of existing projects.

Yes, it should be removed.
Unless I'm missing an important reason behind the explicit -W3.

No, "This has been the default since CMake began" [1], is not enough
rationale to keep it.

In the old times of manual editing of CMAKE_CXX_FLAGS, it was not a huge deal
- in fact, fiddling with CMAKE_CXX_FLAGS was quite canonical way of
doing things..
But with the advent of target_compile_options, the string call
requirement is just unacceptable.

[1] https://gitlab.kitware.com/cmake/cmake/issues/18317

> I've CC'ed the developer's list and suggest that follow-up discussion should occur there.

FYI, I've just subscribed to the developer's list.

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


More information about the cmake-developers mailing list