Skip to content
  • Sebastian Holtermann's avatar
    cmLocalGenerator: Extend the functionality of ``GetIncludeDirectories()`` · b0b820ea
    Sebastian Holtermann authored
    What ``cmLocalGenerator::GetIncludeDirectories`` does
    -----------------------------------------------------
    
    In general it concatenates the
    
    1. ``target->GetIncludeDirectories(LANG)`` and the
    2. ``CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES``.
    
    Additionally it performs some sorting and special treatment of the
    
    - ``CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES``.
    
    By default all ``CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES`` are stripped from
    the result list.
    
    When explicitly requested (by setting ``stripImplicitInclDirs=false``) *some*
    implicit directories are appended to the result list.  The implicit directories
    that *are* appended are those that were requested to be included by
    
    1. ``target->GetIncludeDirectories(LANG)`` or
    2. ``CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES``.
    
    All other implicit directories are still stripped from the result list.
    
    The reason to not simply append all implicit directories is that Qt4's moc has
    problems to parse some headers that might be found in the implicit system
    include directories (See commit d2536579
    and
    [QTBUG-28045](https://bugreports.qt.io/browse/QTBUG-28045)
    ).
    That has been solved in Qt5's moc though.
    
    Extension request to ``cmLocalGenerator::GetIncludeDirectories``
    ----------------------------------------------------------------
    
    For Qt5's moc we like to have an option that allows to append *all* implict
    include directories to the result list, not just those that were user requested.
    
    Changes to ``cmLocalGenerator::GetIncludeDirectories``
    ------------------------------------------------------
    
    - Shorten the function parameter name ``stripImplicitInclDirs`` to
      ``stripImplicitDirs``.
    
    - Add new boolean function parameter ``appendAllImplicitDirs``
      with a default value ``false``.
    
    The old default behavior of the function stays the same, but a specialized
    behavior can be requested by AUTOMOC for Qt4/Qt5 respectively.
    b0b820ea