From 0f8ae514592c46dc8465bc5830d7a830b68affe2 Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Sat, 17 Oct 2015 19:05:00 +0100 Subject: Added support for include-what-you-use in a very simplistic fashion to the Scons build. This isn't exactly production ready because the qt headers are a nightmarish web of interdependencies but it's useful for checking. I've also removed a few unused include files it detected and corrected some things that upset clang in a big way. --- src/SConscript | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/SConscript') diff --git a/src/SConscript b/src/SConscript index f09db093..cd2d8a52 100644 --- a/src/SConscript +++ b/src/SConscript @@ -67,7 +67,6 @@ env.Uic(env.Glob('*.ui')) env.RequireLibraries('uibase', 'shared', 'bsatk', 'esptk') - env.AppendUnique(LIBS = [ 'shell32', 'user32', @@ -114,8 +113,9 @@ env.AppendUnique(LINKFLAGS = [ # modeltest is optional and it doesn't compile anyway... cpp_files = [ - x for x in Glob('*.cpp') - if x.name != 'modeltest.cpp' and x.name != 'aboutdialog.cpp' + x for x in env.Glob('*.cpp', source = True) + if x.name != 'modeltest.cpp' and x.name != 'aboutdialog.cpp' and \ + not x.name.startswith('moc_') # I think this is a strange bug ] about_env = env.Clone() @@ -143,6 +143,14 @@ env.AppendUnique(LIBS = 'zlibstatic') prog = env.Program('ModOrganizer', cpp_files + env.Glob('*.qrc') + other_sources) +############################################################################### +# I'd like to automatically add this to every .o generation. +if 'IWYU' in env: + for f in cpp_files + [ env.File('aboutdialog.cpp') ]: + env.AddPostAction(prog, "-$IWYU $IWYU_FLAGS -Xiwyu --mapping_file=$IWYU_MAPPING_FILE $IWYU_COMCOM " + str(f)) + env.Depends(prog, env['IWYU_MAPPING_FILE']) +############################################################################### + env.InstallModule(prog) for subdir in ('tutorials', 'stylesheets'): -- cgit v1.3.1 From b1cfc45853705163da0641eb8cf1cd77783e009d Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Sun, 25 Oct 2015 08:36:30 +0000 Subject: Make the IWYU generation generic --- SConstruct | 117 +++++++++++++++++++++++++++++++++++++++------------------ qtmappings.imp | 117 +++++++++++++++++++++++++++++++++++++++++---------------- src/SConscript | 8 ---- 3 files changed, 164 insertions(+), 78 deletions(-) (limited to 'src/SConscript') diff --git a/SConstruct b/SConstruct index 94097f3c..fbc7e3fe 100644 --- a/SConstruct +++ b/SConstruct @@ -245,6 +245,83 @@ def DisableQtModules(self, *modules): for module in modules: self['CPPPATH'].remove(os.path.join('$QTDIR', 'include', 'QT' + module)) +def setup_IWYU(env): + import SCons.Defaults + import SCons.Builder + original_shared = SCons.Defaults.SharedObjectEmitter + original_static = SCons.Defaults.StaticObjectEmitter + + def DoIWYU(env, source, target): + for i in range(len(source)): + s = source[i] + dir, name = os.path.split(str(s)) # I'm sure theres a way of getting this from scons + # Don't bother looking at moc files and 7zip source + if not name.startswith('moc_') and \ + not dir.startswith(env['SEVENZIPPATH']): + # Put the .iwyu in the same place as the .obj + targ = os.path.splitext(str(target[i]))[0] + env.IWYU(targ + '.iwyu', s) + + def shared_emitter(target, source, env): + DoIWYU(env, source, target) + return original_shared(target, source, env) + + def static_emitter(target, source, env): + DoIWYU(env, source, target) + return original_static(target, source, env) + + SCons.Defaults.SharedObjectEmitter = shared_emitter + SCons.Defaults.StaticObjectEmitter = static_emitter + + def emitter(target, source, env): + env.Depends(target, '$IWYU_MAPPING_FILE') + return target, source + + iwyu = SCons.Builder.Builder( + action=[ + '-$IWYU $IWYU_FLAGS -Xiwyu --mapping_file=$IWYU_MAPPING_FILE $IWYU_COMCOM $SOURCE', + Touch('$TARGET') + ], + emitter=emitter, + suffix='.iwyu', + src_suffix='.cpp') + + env.Append(BUILDERS={'IWYU': iwyu}) + + # Sigh - IWYU is a right bum as it doesn't recognise /I so I have to duplicate most of the usual stuff. Worse, half the + # flags are irrelevant immaterial and incompetent and I can't use an environment clone because it takes stuff from the + # wrong environment. + + # There has to be a better way of doing this. 'begins with Q means system header'??? + # Also, I can't get this to show issues in the issue window which sucks + env['IWYU_FLAGS'] = [ + # This might turn down the output a bit. I hope + '-Xiwyu', '--transitive_includes_only', + '-D_MT', '-D_DLL', '-m32', + # This is something to do with clang, windows and boost headers + '-DBOOST_USE_WINDOWS_H', + # There's a lot of this, disabled for now + '-Wno-inconsistent-missing-override', + '--system-header-prefix=Q', + '--system-header-prefix=boost/', + # Attempt to get QT to recognise clang output. So far it has not worked well. + '-fdiagnostics-format=msvc', + '-fno-show-column', + # clang says it sets this to 1700 but pretty sure vc12 is 1800 + '-fmsc-version=1800', + ] + if env['CONFIG'] == 'debug': + env['IWYU_FLAGS'] += [ '-D_DEBUG' ] + + env['IWYU_DEFPREFIX'] = '-D' + env['IWYU_DEFSUFFIX'] = '' + env['IWYU_INCPREFIX'] = '-I' + env['IWYU_INCSUFFIX'] = '' + env['IWYU_COMCOM'] = '$IWYU_CPPDEFFLAGS $IWYU_CPPINCFLAGS $CCPDBFLAGS' + env['IWYU_CPPDEFFLAGS'] = '${_defines(IWYU_DEFPREFIX, CPPDEFINES, IWYU_DEFSUFFIX, __env__)}' + env['IWYU_CPPINCFLAGS'] = '$( ${_concat(IWYU_INCPREFIX, CPPPATH, IWYU_INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)' + env['IWYU_MAPPING_FILE'] = env.File('#/qtmappings.imp') + # Create base environment vars = setup_config_variables() @@ -361,44 +438,10 @@ else: env.AppendUnique(CPPFLAGS = [ '/O2', '/MD' ]) env.AppendUnique(LINKFLAGS = [ '/OPT:REF', '/OPT:ICF' ]) -# Add in env variables for include-what-you-use -################################################################ -# I really want to make this a post action for building a .o +# Set up include what you use. Add this as an extra compile step. Note it +# doesn't currently generate an output file (use the output instead!). if 'IWYU' in env: - # Sigh - IWYU is a right bum as it doesn't recognise /I so I have to duplicate most of the usual stuff. Worse, half the - # flags are irrelevant immaterial and incompetent and I can't use an environment clone because it takes stuff from the - # wrong environment. - - # There has to be a better way of doing this. 'begins with Q means system header'??? - # Also, I can't get this to show issues in the issue window which sucks - env['IWYU_FLAGS'] = [ - # This might turn down the output a bit. I hope - '-Xiwyu', '--transitive_includes_only', - '-D_MT', '-D_DLL', '-m32', - # This is something to do with clang, windows and boost headers - '-DBOOST_USE_WINDOWS_H', - # There's a lot of this, disabled for now - '-Wno-inconsistent-missing-override', - '--system-header-prefix=Q', - '--system-header-prefix=boost/', - # Attempt to get QT to recognise clang output. So far it has not worked well. - '-fdiagnostics-format=msvc', - '-fno-show-column', - # clang says it sets this to 1700 but pretty sure vc12 is 1800 - '-fmsc-version=1800', - ] - if env['CONFIG'] == 'debug': - env['IWYU_FLAGS'] += [ '-D_DEBUG' ] - - env['IWYU_DEFPREFIX'] = '-D' - env['IWYU_DEFSUFFIX'] = '' - env['IWYU_INCPREFIX'] = '-I' - env['IWYU_INCSUFFIX'] = '' - env['IWYU_COMCOM'] = '$IWYU_CPPDEFFLAGS $IWYU_CPPINCFLAGS $CCPCHFLAGS $CCPDBFLAGS' - env['IWYU_CPPDEFFLAGS'] = '${_defines(IWYU_DEFPREFIX, CPPDEFINES, IWYU_DEFSUFFIX, __env__)}' - env['IWYU_CPPINCFLAGS'] = '$( ${_concat(IWYU_INCPREFIX, CPPPATH, IWYU_INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)' - env['IWYU_MAPPING_FILE'] = env.File('#/qtmappings.imp') - + setup_IWYU(env) # /OPT:REF removes unreferenced code # for release, use /OPT:ICF (comdat folding: coalesce identical blocks of code) diff --git a/qtmappings.imp b/qtmappings.imp index db59f67f..17073ddd 100644 --- a/qtmappings.imp +++ b/qtmappings.imp @@ -1,19 +1,23 @@ [ # Overrides. Some classes are defined by the spec to reside in their own headers but actually use the same # header as another class. It might make some sense using this for every class in QT... + { symbol: [ "QAbstractItemModel", "private", "", "public" ] }, { symbol: [ "QAbstractTableModel", "private", "", "public" ] }, { symbol: [ "QAtomicInt", "private", "", "public"] }, + { symbol: [ "QCloseEvent", "private", "", "public" ] }, { symbol: [ "QDate", "private", "", "public"] }, { symbol: [ "QDragEnterEvent", "private", "", "public" ] }, + { symbol: [ "QDropEvent", "private", "", "public" ] }, { symbol: [ "QIntValidator", "private", "", "public" ] }, { symbol: [ "QKeyEvent", "private", "", "public" ] }, { symbol: [ "QListWidgetItem", "private", "", "public" ] }, { symbol: [ "QModelIndex", "private", "", "public" ] }, - { symbol: [ "QModelIndexList", "private", "", "public" ] }, + { symbol: [ "QModelIndexList", "private", "", "public" ] }, { symbol: [ "QMouseEvent", "private", "", "public" ] }, { symbol: [ "@QMutableHashIterator(::.*)?", "private", "", "public" ] }, + { symbol: [ "QPersistentModelIndex", "private", "", "public" ] }, + { symbol: [ "QResizeEvent", "private", "", "public" ] }, { symbol: [ "QScopedArrayPointer", "private", "", "public" ] }, - { symbol: [ "QResizeEvent", "private", "", "public" ] }, { symbol: [ "QStyleOptionSlider", "private", "", "public" ] }, { symbol: [ "QStyleOptionViewItem", "private", "", "public" ] }, { symbol: [ "QTableWidgetItem", "private", "", "public" ] }, @@ -32,7 +36,6 @@ { include: [ "@\"(QtConcurrent/)?qtconcurrentrun\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qabstractitemmodel\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qabstractproxymodel\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qalgorithms\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qbytearray\\.h\"", "private", "", "public" ] }, @@ -41,6 +44,7 @@ { include: [ "@\"(QtCore/)?qcoreevent\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qdatastream\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qdatetime\\.h\"", "private", "", "public" ] }, + { include: [ "@\"(QtCore/)?qdebug\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qdir\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qdiriterator\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qfile\\.h\"", "private", "", "public" ] }, @@ -67,17 +71,17 @@ { include: [ "@\"(QtCore/)?qset\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qsharedpointer_impl\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qsize\\.h\"", "private", "", "public" ] }, + { include: [ "@\"(QtCore/)?qstandardpaths\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qstring\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qstringlist\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qurl\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtCore/)?qvariant\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qdebug\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtCore/)?qstandardpaths\\.h\"", "private", "", "public" ] }, - + { include: [ "@\"(QtGui/)?qbrush\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtGui/)?qcolor\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtGui/)?qcursor\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtGui/)?qfont\\.h\"", "private", "", "public" ] }, + { include: [ "@\"(QtGui/)?qfontmetrics\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtGui/)?qicon\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtGui/)?qimage\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtGui/)?qkeysequence\\.h\"", "private", "", "public" ] }, @@ -85,7 +89,6 @@ { include: [ "@\"(QtGui/)?qpalette\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtGui/)?qpen\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtGui/)?qpixmap\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtGui/)?qfontmetrics\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtNetwork/)?qhostaddress\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtNetwork/)?qnetworkaccessmanager\\.h\"", "private", "", "public" ] }, @@ -105,14 +108,16 @@ { include: [ "@\"(QtWidgets/)?qstyleoption\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtWidgets/)?qtabbar\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtWidgets/)?qtabwidget\\.h\"", "private", "", "public" ] }, - { include: [ "@\"(QtWidgets/)?qwidget\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtWidgets/)?qtextedit\\.h\"", "private", "", "public" ] }, + { include: [ "@\"(QtWidgets/)?qwidget\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtWebKit/)?qwebsettings\\.h\"", "private", "", "public" ] }, { include: [ "@\"(QtWebKitWidgets/)?qwebpage\\.h\"", "private", "", "public" ] }, + # I need to find out where these are and group them as above. { include: [ "\"qapplication.h\"", "private", "", "public" ] }, + { include: [ "\"qbuffer.h\"", "private", "", "public" ] }, { include: [ "\"qcheckbox.h\"", "private", "", "public" ] }, { include: [ "\"qclipboard.h\"", "private", "", "public" ] }, { include: [ "\"qcombobox.h\"", "private", "", "public" ] }, @@ -123,11 +128,13 @@ { include: [ "\"qfiledialog.h\"", "private", "", "public" ] }, { include: [ "\"qfilesystemmodel.h\"", "private", "", "public" ] }, { include: [ "\"qfilesystemwatcher.h\"", "private", "", "public" ] }, + { include: [ "\"qgroupbox.h\"", "private", "", "public" ] }, { include: [ "\"qheaderview.h\"", "private", "", "public" ] }, { include: [ "\"qinputdialog.h\"", "private", "", "public" ] }, { include: [ "\"qitemdelegate.h\"", "private", "", "public" ] }, { include: [ "\"qjsonarray.h\"", "private", "", "public" ] }, { include: [ "\"qjsondocument.h\"", "private", "", "public" ] }, + { include: [ "\"qjsonobject.h\"", "private", "", "public" ] }, { include: [ "\"qlabel.h\"", "private", "", "public" ] }, { include: [ "\"qlcdnumber.h\"", "private", "", "public" ] }, { include: [ "\"qlistwidget.h\"", "private", "", "public" ] }, @@ -144,12 +151,14 @@ { include: [ "\"qnetworkdiskcache.h\"", "private", "", "public" ] }, { include: [ "\"qnetworkinterface.h\"", "private", "", "public" ] }, { include: [ "\"qnetworkreply.h\"", "private", "", "public" ] }, + { include: [ "\"qpixmapcache.h\"", "private", "", "public" ] }, { include: [ "\"qprocess.h\"", "private", "", "public" ] }, { include: [ "\"qprogressbar.h\"", "private", "", "public" ] }, { include: [ "\"qprogressdialog.h\"", "private", "", "public" ] }, { include: [ "\"qproxystyle.h\"", "private", "", "public" ] }, { include: [ "\"qpushbutton.h\"", "private", "", "public" ] }, { include: [ "\"qqueue.h\"", "private", "", "public" ] }, + { include: [ "\"qradiobutton.h\"", "private", "", "public" ] }, { include: [ "\"qscrollbar.h\"", "private", "", "public" ] }, { include: [ "\"qsettings.h\"", "private", "", "public" ] }, { include: [ "\"qsharedmemory.h\"", "private", "", "public" ] }, @@ -157,18 +166,24 @@ { include: [ "\"qsignalmapper.h\"", "private", "", "public" ] }, { include: [ "\"qsortfilterproxymodel.h\"", "private", "", "public" ] }, { include: [ "\"qsplashscreen.h\"", "private", "", "public" ] }, + { include: [ "\"qsplitter.h\"", "private", "", "public" ] }, { include: [ "\"qsslsocket.h\"", "private", "", "public" ] }, { include: [ "\"qstackedwidget.h\"", "private", "", "public" ] }, + { include: [ "\"qstatusbar.h\"", "private", "", "public" ] }, { include: [ "\"qstyleditemdelegate.h\"", "private", "", "public" ] }, { include: [ "\"qstylefactory.h\"", "private", "", "public" ] }, + { include: [ "\"qsyntaxhighlighter.h\"", "private", "", "public" ] }, { include: [ "\"qtablewidget.h\"", "private", "", "public" ] }, { include: [ "\"qtemporaryfile.h\"", "private", "", "public" ] }, { include: [ "\"qtextbrowser.h\"", "private", "", "public" ] }, { include: [ "\"qtextcodec.h\"", "private", "", "public" ] }, { include: [ "\"qtextstream.h\"", "private", "", "public" ] }, - { include: [ "\"qtgroupingproxy.h\"", "private", "", "public" ] }, { include: [ "\"qthread.h\"", "private", "", "public" ] }, { include: [ "\"qtimer.h\"", "private", "", "public" ] }, + { include: [ "\"qtoolbar.h\"", "private", "", "public" ] }, + { include: [ "\"qtoolbutton.h\"", "private", "", "public" ] }, + { include: [ "\"qtooltip.h\"", "private", "", "public" ] }, + { include: [ "\"qtranslator.h\"", "private", "", "public" ] }, { include: [ "\"qtreeview.h\"", "private", "", "public" ] }, { include: [ "\"qtreewidget.h\"", "private", "", "public" ] }, { include: [ "\"qurlquery.h\"", "private", "", "public" ] }, @@ -178,48 +193,68 @@ { include: [ "\"qwebhistory.h\"", "private", "", "public" ] }, { include: [ "\"qwebview.h\"", "private", "", "public" ] }, { include: [ "\"qwhatsthis.h\"", "private", "", "public" ] }, + { include: [ "\"qwidgetaction.h\"", "private", "", "public" ] }, + { include: [ "\"qimagereader.h\"", "private", "", "public" ] }, -# Microsft visual C? + + # Microsft visual C? + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, { include: [ "", "private", "", "public" ] }, { include: [ "", "private", "", "public" ] }, # Windows +# Looks like the doucmentation says the 1st char is u/c the rest are l/c # You have to be kidding me. ULONG is defined in winsmcrd.h? { symbol: [ "ULONG", "private", "", "private" ] }, -# These are all in windef.h apparently. Which m/s then says 'use windows.h' + { include: [ "", "private", "", "private" ] }, # Stringapiset.h + { include: [ "", "private", "", "public" ] }, # Windows.h + +# These are all in windef.h apparently. Which m/s then says 'use Windows.h' { include: [ "", "private", "", "private" ] }, # or in winnt apparently { include: [ "", "private", "", "private" ] }, { include: [ "", "private", "", "private" ] }, { include: [ "", "private", "", "private" ] }, # Similary, but for winbase.h - { include: [ "", "private", "", "private" ] }, - { include: [ "", "private", "", "private" ] }, + { include: [ "", "private", "", "private" ] }, { include: [ "", "private", "", "private" ] }, + { include: [ "", "private", "", "private" ] }, + { include: [ "", "private", "", "private" ] }, + { include: [ "", "private", "", "private" ] }, + { include: [ "", "private", "", "private" ] }, -# These ones say xxxx.h (include windows.h) on the ms web site - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, # check this - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, +# These ones say xxxx.h (include Windows.h) on the ms web site + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, # VerRsrc.h + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, -# These ones are in windows.h but the documentation post windows 8 says they are individual headers, +# These ones are in Windows.h but the documentation post windows 8 says they are individual headers, # which looks like M/S are trying to get their act together. Maybe. - { include: [ "", "private", "", "public" ] }, #recheck - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, -# These ones are *not* defined to be in windows.h, but it seems to work. These should probably be cleaned up - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, - { include: [ "", "private", "", "public" ] }, +# These ones are *not* defined to be in Windows.h, but it seems to work. These should probably be cleaned up + { include: [ "", "private", "", "public" ] }, + # These 3 should go to Shellapi.h + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, + { include: [ "", "private", "", "public" ] }, +# combaseapi.h is for objbase.h but objbase.h appears to come free with Windows.h +# Windows.h is a pile of ... + { include: [ "", "private", "", "private" ] }, + { include: [ "", "private", "", "public" ] }, + +# Huh? This one is sane? + { include: [ "", "private", "", "public" ] }, # And for boost??? # These are probably correct but might need a revisit as if you look at the boost documentation pages, it @@ -229,7 +264,10 @@ { include: [ "@\"boost/bind/.*\"", "private", "", "public" ] }, { include: [ "@\"boost/algorithm/string/.*\"", "private", "", "public" ] }, { include: [ "@\"boost/assign/.*\"", "private", "", "public" ] }, + { include: [ "@\"boost/filesystem/.*\"", "private", "", "public" ] }, + { include: [ "@\"boost/format/.*\"", "private", "", "public" ] }, { include: [ "@\"boost/function/.*\"", "private", "", "public" ] }, + { include: [ "@\"boost/python/.*\"", "private", "", "public" ] }, { include: [ "@\"boost/signals2/.*\"", "private", "", "public" ] }, { include: [ "\"boost/smart_ptr/scoped_array.hpp\"", "private", "", "public" ] }, { include: [ "\"boost/smart_ptr/shared_ptr.hpp\"", "private", "", "public" ] }, @@ -239,7 +277,17 @@ ] +# Warning: QtGroupingProxy is not provided by Qt + +#include "qdeclarativecontext.h" // for QDeclarativeContext +#include "qdeclarativeview.h" // for QDeclarativeView, etc +#include "qgraphicsitem.h" // for QGraphicsObject + +#include "qpluginloader.h" +#include "qnetworkproxy.h" + # Ones I don't yet know how to deal with +#include #include "boost/fusion/container/vector/vector10_fwd.hpp" // for fusion #include "boost/iterator/iterator_facade.hpp" // for operator!= #include // for operator delete[], etc @@ -248,10 +296,13 @@ #include "QtCore/qtypeinfo.h" // for swap #include "QtCore/qtypetraits.h" #include "QtCore/qtypetraits.h" // for remove_reference<>::type -#include "QtGui/qfontmetrics.h" -#include "QtGui/qvalidator.h" // for QIntValidator #include "QtGui/qwindowdefs_win.h" // for HINSTANCE #include "QtWidgets/qabstractitemdelegate.h" #include "boost/iterator/iterator_facade.hpp" #include // for _Simple_types<>::value_type #include // for _Tree_const_iterator + +# typical error on stdout (?) +#source\hookdll\dllmain.cpp(220) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data +# error from include-what-you-use (on stderr? at least it's in red) +#source\hookdll\dllmain.cpp(2220) : warning: case value not in enumerated type 'FILE_INFORMATION_CLASS' (aka '_FILE_INFORMATION_CLASS') [-Wswitch] diff --git a/src/SConscript b/src/SConscript index cd2d8a52..d88bee30 100644 --- a/src/SConscript +++ b/src/SConscript @@ -143,14 +143,6 @@ env.AppendUnique(LIBS = 'zlibstatic') prog = env.Program('ModOrganizer', cpp_files + env.Glob('*.qrc') + other_sources) -############################################################################### -# I'd like to automatically add this to every .o generation. -if 'IWYU' in env: - for f in cpp_files + [ env.File('aboutdialog.cpp') ]: - env.AddPostAction(prog, "-$IWYU $IWYU_FLAGS -Xiwyu --mapping_file=$IWYU_MAPPING_FILE $IWYU_COMCOM " + str(f)) - env.Depends(prog, env['IWYU_MAPPING_FILE']) -############################################################################### - env.InstallModule(prog) for subdir in ('tutorials', 'stylesheets'): -- cgit v1.3.1