https://bugs.kde.org/show_bug.cgi?id=375195

--- Comment #9 from RJVB <rjvber...@gmail.com> ---
A bit of both. I ran into this issue rebuilding the previous digiKam release
(why is not relevant here). 

Applications that use boost are not a theoretical concern, they exist. The ECM
are supposed to be a collection of convenience macros and modules, allowing
among others to write more readable CMake files that are easier to maintain.

As such I think they shouldn't oblige software to use rarely used constructs
(and a bit alien to CMake's principle too, IIUC). If there is really no other
solution here, the least that could be done is provide something that hides the
syntax and offloads the obligation for developers to be aware of a rarely used
compiler argument.

Ideally that would be a *documented* mechanism with the effect that the
compiler argument is never added to CXXFLAGS but it could also be a macro of
the form `ECM_PROJECT_USES_NAMED_LOGICAL_OPERATORS`. I'm not very well versed
in writing CMake code but I could put a simple prototype up on Phabricator and
see what we can come up with. Maybe a sort of attribute system where you can
declare specific, less common needs of the project before including the ECM
modules that set up the build environment (= the SET_PROJECT_PROPERTIES feature
CMake forgot to implement ;)).

---

To be very honest, I wasn't even aware that the C/C++ standard define named
logical operators. So I googled a bit and came across a number of good
arguments why one might prefer them. Not compelling enough to change my own
practice but I can very well understand why complex projects like boost use
them - and I doubt that boost has any anti-MSVC agenda (didn't check, though
:)).

What I think the ECM should do is set the options required to make software
compile on all supported/major platforms. Setting things up so that software
fails to build everywhere because there exists a platform where certain
practices cause build failure feels like caressing the proverbial cat against
its fur. Esp. if it happens in a minor release, possibly even without
documentation other than a commit message. No matter how big MS Windows is
compared to all other platforms it's still a platform that's very different
from KDE's main platform (Unix/Linux and derivatives). It would be much more in
line with the other ECM features to figure out how to get all platforms to
accept what they should be accepting in the first place.

FWIW, should getting MSVC to accept named logical operators not be feasible,
isn't this something that should be implemented as a CMake policy?

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to