From 97d6f7ce0132b8030787a6c764e61be77de8bcb0 Mon Sep 17 00:00:00 2001 From: Tom Tanner Date: Sun, 8 Mar 2015 13:20:56 +0000 Subject: First attempt at using scons to build --- src/ModOrganizer.pro | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/ModOrganizer.pro') diff --git a/src/ModOrganizer.pro b/src/ModOrganizer.pro index 98f6f730..66b8b621 100644 --- a/src/ModOrganizer.pro +++ b/src/ModOrganizer.pro @@ -49,3 +49,7 @@ for(QTNAME, QTLIBNAMES) { } INSTALLS += qtlibs otherlibs + +OTHER_FILES +=\ + ../SConstruct\ + SConscript -- cgit v1.3.1 From 2d20185e77113fa1707af121dd2df22742899fa3 Mon Sep 17 00:00:00 2001 From: Tom Tanner Date: Sat, 14 Mar 2015 14:59:52 +0000 Subject: More sconscripts set up --- .hgignore | 2 ++ README.txt | 29 ++++++++++++++++ scons_configure_template.py | 25 ++++++++++++++ src/ModOrganizer.pro | 1 + src/SConscript | 81 +++++++++++++++++---------------------------- src/shared/SConscript | 14 ++------ 6 files changed, 90 insertions(+), 62 deletions(-) create mode 100644 scons_configure_template.py (limited to 'src/ModOrganizer.pro') diff --git a/.hgignore b/.hgignore index d53a7793..e04a39ce 100644 --- a/.hgignore +++ b/.hgignore @@ -34,3 +34,5 @@ html syntax: regexp Makefile\.(Debug|Release) source/.*/debug/.* +scons_configure.py +scons-ModOrganizer-* diff --git a/README.txt b/README.txt index 465c9d31..77559ccb 100644 --- a/README.txt +++ b/README.txt @@ -230,3 +230,32 @@ Troubleshooting (thanks to Ross): Unlocker: http://www.filehippo.com/download_unlocker/ or http://www.emptyloop.com/unlocker/ Warning: With Unlocker v1.9.2, you must select "Advanced" then uncheck everything to avoid having some Delta toolbar garbage installed... + +5) Problem TT has seen: + Complains about 'qtwebkit4' missing. FOr some reason this seems to insist on + living with modorganiser.exe + +------------------- +Building with scons +------------------- + +1) Download scons from www.scons.org and install +2) Download QT4 (and/or QT5) from https://bitbucket.org/dirkbaechle/scons_qt4 and + https://bitbucket.org/dirkbaechle/scons_qt5. Install as per instructions +3) Copy scons_configure_template.py to scons_configure.py. Edit to point to your + boost/python/zlib paths as appropriate +4) Create build kits as follows: + Custom Process step: + Command: \Scripts\scons.bat + Arguments: -u + Working directory: %{sourcedir} + + For the release build, add 'CONFIG=release' to the arguments. + + If you want to do parallel builds, add -j and a number to the arguments. + However you may need to install pywin32 (but it seems to work OK for me). + + You can do this in the main project (probably should), but if you want to build just + a particular subproject, you can do it in the subproject instead (or as well). + +This isn't complete by any means but.. \ No newline at end of file diff --git a/scons_configure_template.py b/scons_configure_template.py new file mode 100644 index 00000000..10baa234 --- /dev/null +++ b/scons_configure_template.py @@ -0,0 +1,25 @@ +# This python script contains the configuration for scons +# Copy this to scons_configure.py and adjust to taste. + +# Version of Visual Studio to use, if you wish to use a specific version. If you +# don't specify a version, the latest will be picked.. See the scons manual for +# supported values. +#MSVC_VERSION = '10.0Exp' + +# Path to your python install +# You don't really need to set this up but you might if (say) you have a 32- and +# 64-bit python install and scons has been installed for the 64 bit version +#PYTHONPATH=C:\Apps\Python + +# Path to your boost install - it should have a boost/ subdirectory and a stage/ +# subdirectory. The scons script will use stage/lib if there, or the appropriate +# version for your compiler, if you installed the multiple-build version +BOOST_PATH = 'C:\\Apps\\boost_1_55_0' + +# Path to your QT install. This might constrain the version of MSVC you can use. +# This seems to be set by QTCreator +#QTDIR = 'C:\\Apps\\Qt\\4.8.6' + +# Path to zlib. Please read the README file for more information about how this +# needs to be set up +ZLIB_PATH = 'C:\\Apps\\zlib-1.2.8' diff --git a/src/ModOrganizer.pro b/src/ModOrganizer.pro index 66b8b621..32038a09 100644 --- a/src/ModOrganizer.pro +++ b/src/ModOrganizer.pro @@ -52,4 +52,5 @@ INSTALLS += qtlibs otherlibs OTHER_FILES +=\ ../SConstruct\ + ../scons_configure.py\ SConscript diff --git a/src/SConscript b/src/SConscript index 92bd9d21..3a5aaa1e 100644 --- a/src/SConscript +++ b/src/SConscript @@ -1,5 +1,4 @@ import os -#import subprocess Import('qt_env') @@ -28,17 +27,18 @@ else: 'Declarative' ] -env.EnableQt4Modules(['Qt' + n for n in modules], debug = env['CONFIG'] == 'debug') +env.EnableQt4Modules(['Qt' + n for n in modules], + debug = env['CONFIG'] == 'debug') env.Uic4(Glob('*.ui')) # modeltest is optional and it doesn't compile anyway... cpp_files = [ x for x in Glob('*.cpp') if not str(x).endswith('modeltest.cpp') ] env.AppendUnique(LIBPATH = [ - '../uibase', - '../shared', - '../bsatk', - '../esptk' + '..\\uibase', + '..\\shared', + '..\\bsatk', + '..\\esptk' ]) env.AppendUnique(LIBS = [ @@ -58,21 +58,14 @@ env.AppendUnique(LIBS = [ # We have to 'persuade' moc to generate certain other targets and inject them into # the list of cpps -other_sources = [] -for file in env.Glob('*.h'): - target = str(file)[:-1] + 'cpp' - if not os.path.exists(target): - if 'Q_OBJECT' in file.get_contents(): - header = os.path.basename(str(file)) - target = env.ExplicitMoc4('moc_' + header[:-1] + 'cpp', header) - other_sources.append(target) +other_sources = env.AddExtraMoc(env.Glob('*.h')) for file in env.Glob('*.rc'): if str(file).endswith('version.rc'): continue other_sources.append(env.RES(file)) -# Add the translate in here too +# FIXME Add the translate in here too # Note the order of this is important, or you can pick up the wrong report.h... # Doing appendunique seems to throw the moc code into a tizzy @@ -88,7 +81,6 @@ env['CPPPATH'] += [ ] env.AppendUnique(CPPDEFINES = [ - 'UNICODE', '_UNICODE', '_CRT_SECURE_NO_WARNINGS', '_SCL_SECURE_NO_WARNINGS', @@ -108,9 +100,23 @@ env.AppendUnique(CPPFLAGS = [ '-wd4100', '-wd4127', '-wd4512', '-wd4189' ]) env['WINDOWS_EMBED_MANIFEST'] = True -program = env.Program('ModOrganizer', cpp_files + env.Glob('*.qrc') + other_sources) -# Dodgy. just get the exe -env.Install(env['INSTALL_PATH'], program[0]) +env.AppendUnique(LINKFLAGS = [ + '/SUBSYSTEM:WINDOWS', + '${EXE_MANIFEST_DEPENDENCY}' +]) + +prog = env.Program('ModOrganizer', + cpp_files + env.Glob('*.qrc') + other_sources) +env.Depends(prog, env.Value(env['ENV']['DLLSPATH'])) + +# FIXME scons bug doesn't provide pdb for executable. +if env['CONFIG'] == 'debug': + x = env.File('ModOrganizer.pdb') + env.Depends(x, prog) + prog.append(x) + +env.Install(env['INSTALL_PATH'], + filter(lambda x: str(x).endswith('.exe') or str(x).endswith('.pdb'), prog)) for subdir in ('tutorials', 'stylesheets'): env.Install(os.path.join(env['INSTALL_PATH'], subdir), @@ -118,45 +124,15 @@ for subdir in ('tutorials', 'stylesheets'): """ CONFIG(debug, debug|release) { - LIBS += -L$$OUT_PWD/../shared/debug - LIBS += -L$$OUT_PWD/../bsatk/debug - LIBS += -L$$OUT_PWD/../uibase/debug - LIBS += -L$$OUT_PWD/../boss_modified/debug - LIBS += -lDbgHelp - PRE_TARGETDEPS += \ - $$OUT_PWD/../shared/debug/mo_shared.lib \ - $$OUT_PWD/../bsatk/debug/bsatk.lib } else { - LIBS += -L$$OUT_PWD/../shared/release - LIBS += -L$$OUT_PWD/../bsatk/release - LIBS += -L$$OUT_PWD/../uibase/release - LIBS += -L$$OUT_PWD/../boss_modified/release QMAKE_CXXFLAGS += /Zi /GL QMAKE_LFLAGS += /DEBUG /LTCG /OPT:REF /OPT:ICF - PRE_TARGETDEPS += \ - $$OUT_PWD/../shared/release/mo_shared.lib \ - $$OUT_PWD/../bsatk/release/bsatk.lib } CONFIG += embed_manifest_exe TRANSLATIONS = organizer_en.ts -HGID = $$system(hg id -i) -DEFINES += HGID=\\\"$${HGID}\\\" - -CONFIG(debug, debug|release) { - SRCDIR = $$OUT_PWD/debug - DSTDIR = $$PWD/../../outputd -} else { - SRCDIR = $$OUT_PWD/release - DSTDIR = $$PWD/../../output -} - -BASEDIR = $$PWD -BASEDIR ~= s,/,$$QMAKE_DIR_SEP,g -SRCDIR ~= s,/,$$QMAKE_DIR_SEP,g -DSTDIR ~= s,/,$$QMAKE_DIR_SEP,g QMAKE_POST_LINK += xcopy /y /s /I $$quote($$BASEDIR\\*.qm) $$quote($$DSTDIR)\\translations $$escape_expand(\\n) @@ -172,7 +148,6 @@ CONFIG(debug, debug|release) { """ compile/link output -DHGID=\"dfd7e875f973+\" -DQT_DECLARATIVE_DEBUG -link /LIBPATH:"c:\Apps\Qt\4.8.6\lib" /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /MANIFEST /MANIFESTFILE:"debug\ModOrganizer.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:debug\ModOrganizer.exe @C:\Users\Dad\AppData\Local\Temp\nm237A.tmp LINK : debug\ModOrganizer.exe not found or not built by the last incremental link; performing full link mt.exe -nologo -manifest "debug\ModOrganizer.intermediate.manifest" -outputresource:debug\ModOrganizer.exe;1 """ @@ -190,3 +165,9 @@ link @c:\users\dad\appdata\local\temp\tmpozwyw_.lnk Using tempfile c:\users\dad\appdata\local\temp\tmpuzxnwy.lnk for command line: link /nologo /OUT:build-ModOrganizer-scons\debug\organizer\ModOrganizer.exe /LIBPATH:C:\Apps\boost_1_55_0\lib32-msvc-10.0 /LIBPATH:C:\Apps\Qt\4.8.6\lib /LIBPATH:build-ModOrganizer-scons\debug\uibase /LIBPATH:source\uibase /LIBPATH:build-ModOrganizer-scons\debug\shared /LIBPATH:source\shared /LIBPATH:build-ModOrganizer-scons\debug\bsatk /LIBPATH:source\bsatk /LIBPATH:build-ModOrganizer-scons\debug\esptk /LIBPATH:source\esptk qtmaind.lib QtCored4.lib QtGuid4.lib QtNetworkd4.lib QtScriptd4.lib QtSqld4.lib QtWebKitd4.lib QtXmld4.lib QtXmlPatternsd4.lib QtDeclaratived4.lib uibase.lib mo_shared.lib bsatk.lib esptk.lib shell32.lib user32.lib ole32.lib advapi32.lib gdi32.lib shlwapi.lib Psapi.lib Version.lib build-ModOrganizer-scons\debug\organizer\aboutdialog.obj build-ModOrganizer-scons\debug\organizer\activatemodsdialog.obj build-ModOrganizer-scons\debug\organizer\bbcode.obj build-ModOrganizer-scons\debug\organizer\browserdialog.obj build-ModOrganizer-scons\debug\organizer\browserview.obj build-ModOrganizer-scons\debug\organizer\categories.obj build-ModOrganizer-scons\debug\organizer\categoriesdialog.obj build-ModOrganizer-scons\debug\organizer\credentialsdialog.obj build-ModOrganizer-scons\debug\organizer\csvbuilder.obj build-ModOrganizer-scons\debug\organizer\directoryrefresher.obj build-ModOrganizer-scons\debug\organizer\downloadlist.obj build-ModOrganizer-scons\debug\organizer\downloadlistsortproxy.obj build-ModOrganizer-scons\debug\organizer\downloadlistwidget.obj build-ModOrganizer-scons\debug\organizer\downloadlistwidgetcompact.obj build-ModOrganizer-scons\debug\organizer\downloadmanager.obj build-ModOrganizer-scons\debug\organizer\dummybsa.obj build-ModOrganizer-scons\debug\organizer\editexecutablesdialog.obj build-ModOrganizer-scons\debug\organizer\executableslist.obj build-ModOrganizer-scons\debug\organizer\filedialogmemory.obj build-ModOrganizer-scons\debug\organizer\gameinfoimpl.obj build-ModOrganizer-scons\debug\organizer\genericicondelegate.obj build-ModOrganizer-scons\debug\organizer\helper.obj build-ModOrganizer-scons\debug\organizer\icondelegate.obj build-ModOrganizer-scons\debug\organizer\installationmanager.obj build-ModOrganizer-scons\debug\organizer\json.obj build-ModOrganizer-scons\debug\organizer\loadmechanism.obj build-ModOrganizer-scons\debug\organizer\lockeddialog.obj build-ModOrganizer-scons\debug\organizer\logbuffer.obj build-ModOrganizer-scons\debug\organizer\loghighlighter.obj build-ModOrganizer-scons\debug\organizer\main.obj build-ModOrganizer-scons\debug\organizer\mainwindow.obj build-ModOrganizer-scons\debug\organizer\messagedialog.obj build-ModOrganizer-scons\debug\organizer\moapplication.obj build-ModOrganizer-scons\debug\organizer\moc_aboutdialog.obj build-ModOrganizer-scons\debug\organizer\moc_activatemodsdialog.obj build-ModOrganizer-scons\debug\organizer\moc_browserdialog.obj build-ModOrganizer-scons\debug\organizer\moc_browserview.obj build-ModOrganizer-scons\debug\organizer\moc_categoriesdialog.obj build-ModOrganizer-scons\debug\organizer\moc_credentialsdialog.obj build-ModOrganizer-scons\debug\organizer\moc_directoryrefresher.obj build-ModOrganizer-scons\debug\organizer\moc_downloadlist.obj build-ModOrganizer-scons\debug\organizer\moc_downloadlistsortproxy.obj build-ModOrganizer-scons\debug\organizer\moc_downloadlistwidget.obj build-ModOrganizer-scons\debug\organizer\moc_downloadlistwidgetcompact.obj build-ModOrganizer-scons\debug\organizer\moc_downloadmanager.obj build-ModOrganizer-scons\debug\organizer\moc_editexecutablesdialog.obj build-ModOrganizer-scons\debug\organizer\moc_genericicondelegate.obj build-ModOrganizer-scons\debug\organizer\moc_icondelegate.obj build-ModOrganizer-scons\debug\organizer\moc_installationmanager.obj build-ModOrganizer-scons\debug\organizer\moc_lockeddialog.obj build-ModOrganizer-scons\debug\organizer\moc_logbuffer.obj build-ModOrganizer-scons\debug\organizer\moc_loghighlighter.obj build-ModOrganizer-scons\debug\organizer\moc_mainwindow.obj build-ModOrganizer-scons\debug\organizer\moc_messagedialog.obj build-ModOrganizer-scons\debug\organizer\moc_moapplication.obj build-ModOrganizer-scons\debug\organizer\moc_modinfo.obj build-ModOrganizer-scons\debug\organizer\moc_modinfodialog.obj build-ModOrganizer-scons\debug\organizer\moc_modlist.obj build-ModOrganizer-scons\debug\organizer\moc_modlistsortproxy.obj build-ModOrganizer-scons\debug\organizer\moc_modlistview.obj build-ModOrganizer-scons\debug\organizer\moc_motddialog.obj build-ModOrganizer-scons\debug\organizer\moc_nexusinterface.obj build-ModOrganizer-scons\debug\organizer\moc_nxmaccessmanager.obj build-ModOrganizer-scons\debug\organizer\moc_overwriteinfodialog.obj build-ModOrganizer-scons\debug\organizer\moc_pluginlist.obj build-ModOrganizer-scons\debug\organizer\moc_pluginlistsortproxy.obj build-ModOrganizer-scons\debug\organizer\moc_previewdialog.obj build-ModOrganizer-scons\debug\organizer\moc_problemsdialog.obj build-ModOrganizer-scons\debug\organizer\moc_profile.obj build-ModOrganizer-scons\debug\organizer\moc_profileinputdialog.obj build-ModOrganizer-scons\debug\organizer\moc_profilesdialog.obj build-ModOrganizer-scons\debug\organizer\moc_qtgroupingproxy.obj build-ModOrganizer-scons\debug\organizer\moc_queryoverwritedialog.obj build-ModOrganizer-scons\debug\organizer\moc_savegame.obj build-ModOrganizer-scons\debug\organizer\moc_savegamegamebyro.obj build-ModOrganizer-scons\debug\organizer\moc_savegameinfowidget.obj build-ModOrganizer-scons\debug\organizer\moc_savetextasdialog.obj build-ModOrganizer-scons\debug\organizer\moc_selectiondialog.obj build-ModOrganizer-scons\debug\organizer\moc_selfupdater.obj build-ModOrganizer-scons\debug\organizer\moc_settings.obj build-ModOrganizer-scons\debug\organizer\moc_settingsdialog.obj build-ModOrganizer-scons\debug\organizer\moc_singleinstance.obj build-ModOrganizer-scons\debug\organizer\moc_spawn.obj build-ModOrganizer-scons\debug\organizer\moc_syncoverwritedialog.obj build-ModOrganizer-scons\debug\organizer\moc_transfersavesdialog.obj build-ModOrganizer-scons\debug\organizer\modflagicondelegate.obj build-ModOrganizer-scons\debug\organizer\modinfo.obj build-ModOrganizer-scons\debug\organizer\modinfodialog.obj build-ModOrganizer-scons\debug\organizer\modlist.obj build-ModOrganizer-scons\debug\organizer\modlistsortproxy.obj build-ModOrganizer-scons\debug\organizer\modlistview.obj build-ModOrganizer-scons\debug\organizer\motddialog.obj build-ModOrganizer-scons\debug\organizer\nexusinterface.obj build-ModOrganizer-scons\debug\organizer\noeditdelegate.obj build-ModOrganizer-scons\debug\organizer\nxmaccessmanager.obj build-ModOrganizer-scons\debug\organizer\organizerproxy.obj build-ModOrganizer-scons\debug\organizer\overwriteinfodialog.obj build-ModOrganizer-scons\debug\organizer\persistentcookiejar.obj build-ModOrganizer-scons\debug\organizer\pluginlist.obj build-ModOrganizer-scons\debug\organizer\pluginlistsortproxy.obj build-ModOrganizer-scons\debug\organizer\previewdialog.obj build-ModOrganizer-scons\debug\organizer\previewgenerator.obj build-ModOrganizer-scons\debug\organizer\problemsdialog.obj build-ModOrganizer-scons\debug\organizer\profile.obj build-ModOrganizer-scons\debug\organizer\profileinputdialog.obj build-ModOrganizer-scons\debug\organizer\profilesdialog.obj build-ModOrganizer-scons\debug\organizer\qrc_resources.obj build-ModOrganizer-scons\debug\organizer\qrc_stylesheet_resource.obj build-ModOrganizer-scons\debug\organizer\qtgroupingproxy.obj build-ModOrganizer-scons\debug\organizer\queryoverwritedialog.obj build-ModOrganizer-scons\debug\organizer\report.obj build-ModOrganizer-scons\debug\organizer\safewritefile.obj build-ModOrganizer-scons\debug\organizer\savegame.obj build-ModOrganizer-scons\debug\organizer\savegamegamebryo.obj build-ModOrganizer-scons\debug\organizer\savegameinfowidget.obj build-ModOrganizer-scons\debug\organizer\savegameinfowidgetgamebryo.obj build-ModOrganizer-scons\debug\organizer\savetextasdialog.obj build-ModOrganizer-scons\debug\organizer\selectiondialog.obj build-ModOrganizer-scons\debug\organizer\selfupdater.obj build-ModOrganizer-scons\debug\organizer\serverinfo.obj build-ModOrganizer-scons\debug\organizer\settings.obj build-ModOrganizer-scons\debug\organizer\settingsdialog.obj build-ModOrganizer-scons\debug\organizer\singleinstance.obj build-ModOrganizer-scons\debug\organizer\spawn.obj build-ModOrganizer-scons\debug\organizer\syncoverwritedialog.obj build-ModOrganizer-scons\debug\organizer\transfersavesdialog.obj """ +""" +/MANIFESTFILE:"debug\ModOrganizer.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:debug\ModOrganizer.exe @C:\Users\Dad\AppData\Local\Temp\nm8681.tmp +""" +""" +mt /nologo -manifest scons-ModOrganizer-QT_4_8_6_for_vs_2010_32bit-Debug\organizer\ModOrganizer.exe.manifest -outputresource:scons-ModOrganizer-QT_4_8_6_for_vs_2010_32bit-Debug\organizer\ModOrganizer.exe;1 +""" diff --git a/src/shared/SConscript b/src/shared/SConscript index 1fd5a03e..30669320 100644 --- a/src/shared/SConscript +++ b/src/shared/SConscript @@ -9,18 +9,8 @@ modules = [ 'Gui' ] -env.EnableQt4Modules(['Qt' + n for n in modules], debug = env['CONFIG'] == 'debug') - -#CONFIG(debug, debug|release) { -# LIBS += -L$$OUT_PWD/../bsatk/debug -# LIBS += -lDbgHelp -# QMAKE_CXXFLAGS_DEBUG -= -Zi -# QMAKE_CXXFLAGS += -Z7 -# PRE_TARGETDEPS += $$OUT_PWD/../bsatk/debug/bsatk.lib -#} else { -# LIBS += -L$$OUT_PWD/../bsatk/release -# PRE_TARGETDEPS += $$OUT_PWD/../bsatk/release/bsatk.lib -#} +env.EnableQt4Modules(['Qt' + n for n in modules], + debug = env['CONFIG'] == 'debug') env.StaticLibrary('mo_shared', env.Glob('*.cpp')) -- cgit v1.3.1