Skip to content
  • Thiago Macieira's avatar
    Implement a more direct headersclean check · 6668f5be
    Thiago Macieira authored
    
    
    Test each include file directly, instead of doing a large #include. This
    verifies that each header is compilable on its own. One big advantage of
    doing it via a special compiler in qmake is that we skip pre-compiled
    headers, which has hidden build errors in the past.
    
    This solution is implemented by making syncqt produce a second list of
    headers.  This list is the same as the list of headers in the source
    code to be installed, minus the headers that declare themselves to be
    unclean, via the pragma:
      #pragma qt_sync_skip_header_check
    
    This mechanism is applied only for public libraries (skipping
    QtPlatformSupport, an internal_module).
    
    This test is enabled only for -developer-builds of Qt because it
    increases the compilation time.
    
    On QtTest: the library only links to QtCore, but it has two headers that
    provide inline-only functionality by including QtGui and QtWidgets
    headers (namely, qtest_gui.h and qtest_widget.h). If those two modules
    aren't getting compiled due to -no-gui or -no-widgets to configure, we
    need to remove the respective headers from the list of headers to be
    checked. If they are being built, then we need to make QtTest's build
    wait for the headers to be generated and that happens when qmake is
    first run inside the src/gui and src/widgets directories.
    
    Change-Id: I57d64bd697a92367c8464c073a42e4d142a9a15f
    Reviewed-by: default avatarOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
    6668f5be