[cmake-developers] Compiler features/extensions remaining/future issues

Ben Boeckel ben.boeckel at kitware.com
Tue Jun 10 13:17:57 EDT 2014


On Tue, Jun 10, 2014 at 17:30:24 +0200, Stephen Kelly wrote:
> I want to avoid having to understand all of the ParaView CMake code and that 
> of its dependencies, and whether python bindings need to be enabled etc.

Well, there isn't much you need to grok from the code there; it's just a
project with lots of targets with lots of interdependencies. When adding
compile features, the time drops noticeably.

Brad, Rob, and I looked at the code and performance output today and it
looks like it is the evaluation of the generator expressions made to
find the compile features, compile options, and compile definitions that
takes a long time. *Each* takes ~10% of overall time and the projects
I'm testing don't use the interface propagation features *at all*. It's
the evaluation of the generated genex that takes a long time (parsing is
now inconsequential). Using debugging messages shows that the
evaluations are being cached, but that probably only saves us from even
more slowdowns.

Brad is going to take a deeper look at it and might have more
information in the next few days.

> Ben, can you run your timing test with a commit before my topic and after 
> it? Timing tests with master and your extra topics don't tell us anything on 
> this question.

Will do. Should be done in an hour or two. I'm using commits b56a9ae (before)
and 593b69c (after):

    commit b56a9ae7f14189fd2bce2ca3e9441060ca231638
    Merge: 593b69c 9eaf375
    Author: Brad King <brad.king at kitware.com>
    Date:   Tue Apr 15 10:32:11 2014 -0400

        Merge topic 'target_compile_features'

        9eaf3755 Export: Populate INTERFACE_COMPILE_FEATURES property.
        8ed59fc2 Add target_compile_features command.
        4e6ca504 cmTargetPropCommandBase: Change the interface to return bool.
        5412dede cmTarget: Transitively evaluate compiler features.
        baff4434 cmTarget: Allow populating COMPILE_FEATURES using generator expressions.
        f97bf437 Features: Add cxx_auto_type.
        03355d6b cmTarget: Add COMPILE_FEATURES target property.
        faeddf64 project: Add infrastructure for recording CXX compiler features
        913394af cmTarget: Add CXX_STANDARD and CXX_EXTENSION target properties.
        8238a6cd Add some COMPILE_OPTIONS for specifying C++ dialect.
        892243fc Tests: Require CMake 3.0 for the SystemInformation test.
        59b5fdd3 Don't load Clang-CXX from AppleClang-CXX.

    commit 593b69c9dc9e692b198f1ddbf9251130e61a4679
    Merge: 33358fd 941a140
    Author: Brad King <brad.king at kitware.com>
    Date:   Tue Apr 15 10:22:41 2014 -0400

        Merge topic 'aix-no-sstream'

        941a1404 AIX: fix compilation error because of missing <sstream>

--Ben



More information about the cmake-developers mailing list