# qt4.py is required for this script to work. It was downloaded from: # http://clam-project.org/clam/trunk/CLAM/scons/sconstools/qt4.py import os # Lib libFiles = Glob('lib/*.cpp') libEnv = Environment() if "gcc" in libEnv["TOOLS"]: libEnv.Append(CCFLAGS = ['-Wall', '-Wextra']) if 'release' in COMMAND_LINE_TARGETS: libEnv.Append(CCFLAGS = ['-O3']) elif 'coverage' in COMMAND_LINE_TARGETS: libEnv.Append(CCFLAGS = ['-g', '-fprofile-arcs', '-ftest-coverage']) libEnv.Append(LINKFLAGS = ['-g', '-fprofile-arcs', '-ftest-coverage']) elif 'ccwin32' in COMMAND_LINE_TARGETS: libEnv.Replace(CXX = 'i586-mingw32msvc-g++') libEnv.Replace(CCFLAGS = ['-O3']) libEnv.Replace(LIBS = ['shlwapi']) else: libEnv.Append(CCFLAGS = ['-g','-O0']) libEnv.Append(CPPPATH = ['lib']) libObjects = libEnv.Object(libFiles) # Cppcheck (cli) cliFiles = Glob('cli/*.cpp')+libObjects cliEnv = libEnv.Clone() cliEnv.Append(CPPPATH = ['cli']) if "gcc" in libEnv["TOOLS"]: cliEnv.Append(CCFLAGS = ['-pedantic']) cppcheck = cliEnv.Program('cppcheck',cliFiles) Alias('cppcheck',[cppcheck]) Default(cppcheck) # Testrunner testFiles = Glob('test/*.cpp')+libObjects testEnv = libEnv.Clone() testEnv.Append(CPPPATH = ['test']) if "gcc" in libEnv["TOOLS"]: testEnv.Append(CCFLAGS = ['-pedantic']) testrunner = testEnv.Program('testrunner', testFiles) Alias('testrunner',[testrunner]) # GUI emptyEnv = Environment() conf = Configure(emptyEnv) try: QTDIR = os.popen('qmake -query QT_INSTALL_DATA').read() pkgpath = os.environ.get("PKG_CONFIG_PATH", "") pkgpath += ":%s/lib/pkgconfig" % QTDIR os.environ["PKG_CONFIG_PATH"] = pkgpath os.environ["QTDIR"] = QTDIR guiEnv = libEnv.Clone(tools=["default", "qt4"], toolpath=['.']) guiEnv.Append(CPPPATH = ['gui']) guiEnv.EnableQt4Modules(["QtGui", "QtCore"]) rccs = [guiEnv.Qrc("gui/gui.qrc", QT4_QRCFLAGS="-name CppcheckGUI")] uiFiles = Glob('gui/*.ui') uis = [guiEnv.Uic4(ui) for ui in uiFiles] guiFiles = Glob('gui/*.cpp')+libObjects gui = guiEnv.Program(target="gui_cppcheck", source=[rccs, guiFiles]) Alias('gui',[gui]) except: gui = Alias('gui','') if 'gui' in COMMAND_LINE_TARGETS: print "Qt4 not found. It is required for gui" # Execute testrunner test = AlwaysBuild(Alias("test", testrunner, "./$SOURCE")) # All Alias('all',[testrunner,cppcheck,gui]) # Release Alias('release',[cppcheck]) # ccwin32 (Cross compile win32 in Linux) ccwin32 = Alias('ccwin32',[cppcheck],Move('cppcheck.exe','cppcheck')) Clean(ccwin32,'cppcheck.exe') # Coverage Alias('coverage',[test],[ 'rm -r coverage_report', 'gcov lib/*.cpp -o lib/', 'lcov --directory ./ --capture --output-file lcov.info -b ./', 'genhtml lcov.info -o coverage_report', 'rm lib/*.gcda', 'rm lib/*.gcno', 'rm test/*.gcda', 'rm test/*.gcno', 'rm lcov.info']) Help(""" Type: 'scons' - cppcheck (cli) 'scons cppcheck' - cppcheck (cli) 'scons gui' - gui_cppcheck 'scons testrunner' - testrunner 'scons test' - testrunner + execute tests 'scons all' - gui+cppcheck+testrunner 'scons release' - cppcheck release version 'scons release gui' - cppcheck+gui release versions 'scons coverage' - coverage report 'scons ccwin32' - Cross compile win32 (cli) in Linux 'scons -c all' - clean all """)