Review Request 114897: Make KDE_ENABLE_EXCEPTIONS a list

Alex Merry kde at randomguy3.me.uk
Tue Jan 7 17:57:03 UTC 2014



> On Jan. 7, 2014, 4:55 p.m., Stephen Kelly wrote:
> > Why is -UQT_NO_EXCEPTIONS needed?

Hrm.  After some investigation: I'm not entirely sure.  The simplest answer is "that's what qmake does" - defines QT_NO_EXCEPTIONS exactly when exceptions are disabled (note that exceptions are disabled by default for Qt itself, but enabled by default for all other code, including tests in Qt and applications using qmake as their build system).

You would have thought that enabling this only for the headers in Qt (but not for the library itself) would be dangerous - for example, QException is declared, but its methods will not be defined if Qt was not compiled with exception support.

As far as I can see, the only useful behaviour you get from making QT_NO_EXCEPTIONS match the compiler flags, rather than Qt's compilation flags, is that you can get QVERIFY_EXCEPTION_THROWN from QTest even when Qt was compiled without exceptions.  But in other regards, I think there is the potential for some weird behaviour if QT_NO_EXCEPTIONS does not match how Qt was compiled.


- Alex


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/114897/#review46984
-----------------------------------------------------------


On Jan. 7, 2014, 4:52 p.m., Alex Merry wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/114897/
> -----------------------------------------------------------
> 
> (Updated Jan. 7, 2014, 4:52 p.m.)
> 
> 
> Review request for Build System, KDE Frameworks and Stephen Kelly.
> 
> 
> Repository: extra-cmake-modules
> 
> 
> Description
> -------
> 
> Make KDE_ENABLE_EXCEPTIONS a list
> 
> When KDE_ENABLE_EXCEPTIONS contains two arguments, they are currently a
> single string containing those space-separated arguments.  It can thus
> be used as
> set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE_ENABLE_EXCEPTIONS}")
> However, the proper way to set compile flags these days is to use
> add_compile_options, as in
> add_compile_options(${KDE_ENABLE_EXCEPTIONS})
> which requires KDE_ENABLE_EXCEPTIONS to be a list.
> 
> Note that this change means that setting CMAKE_CXX_FLAGS like above NO
> LONGER WORKS (as you will get the argument
> -fexceptions;-UQT_NO_EXCEPTIONS added for GCC and Clang).
> 
> 
> Diffs
> -----
> 
>   kde-modules/KDECompilerSettings.cmake 72824e166d03dcc2d089814dc121f08ba998974a 
> 
> Diff: https://git.reviewboard.kde.org/r/114897/diff/
> 
> 
> Testing
> -------
> 
> ThreadWeaver compiles under GCC on Linux if (and only if) I change the src/CMakeLists.txt file to use add_compile_options instead of setting CMAKE_CXX_FLAGS.
> 
> 
> Thanks,
> 
> Alex Merry
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-buildsystem/attachments/20140107/5ec2d5a1/attachment.html>


More information about the Kde-buildsystem mailing list