WindowsBuild30 » History » Version 31

Version 30 (Chris Cannam, 2018-07-11 11:23 AM) → Version 31/32 (Chris Cannam, 2018-07-11 11:43 AM)

h1. Building SV v3.1 on Windows

Versions 3.0+ of Sonic Visualiser are primarily 64-bit for Windows, although the 32-bit version is still supported.

* Both builds can be run from Qt Creator, or from a command prompt using batch build scripts provided. The release packages are built using the batch scripts.

* The *64-bit version* is built using the *Microsoft Visual C++ compiler*. Install 64-bit Microsoft Visual Studio 2017 Community Edition and then Qt 5.11 (or latest 5.x).

* The *32-bit version* is built using the *MinGW compiler*. Install Qt 5.11 (or latest 5.x) with Qt Creator and ensure that the 32-bit MinGW option is available.

* The official 64-bit installer also includes some helper binaries from the 32-bit build, enabling it to use 32-bit Vamp plugins as well as 64-bit ones. So to make our official 64-bit installer, we actually have to complete both builds.

* The installers are built using "WiX":http://wixtoolset.org/, so you must have that installed. The path to WiX is hardcoded in our script and at the time of writing it assumes WiX v3.11.

* We use the "Repoint":https://github.com/cannam/repoint source dependency manager. Ensure the required SML runtime for this is available (either "SML/NJ":http://smlnj.org/ or "Poly/ML":http://www.polyml.org/), and then run @.\repoint install@ in a command prompt or Powershell window before opening a build project or starting a build.

In both cases (32 and 64 bit) the dependent libraries we use are found in the @sv-dependency-builds@ subrepo. Prior to the switch to using the Repoint dependency manager, this subrepo was checked out by Mercurial as a matter of course with the SV repo; after the switch to Repoint, it is one of the library modules that is installed by running @.\repoint install@. There should be no other external dependencies besides Qt and the runtime libraries it needs.

h2. Which SV branch to use

Use the @default@ branch of the SV Mercurial repo unless you have a particular reason to know otherwise.

h2. 32-bit build and installer

h4. Build with Qt Creator

This process is similar to that introduced in v2.1 (see [[here|WindowsBuild21]]), except that we now *do* use a shadow build.

* Check out the correct branch (probably @default@ as described above)
* Run @.\repoint install@ to get the code dependencies
* Open the main @sonic-visualiser.pro@ project in Qt Creator
* Set up a *release build* using *Desktop Qt 5.11.0 MinGW 32-bit* as a *shadow build*
* "Run qmake" and "Rebuild All"

There is still one unresolved manual step before you can run Sonic Visualiser:

* Go to the build directory (e.g. @build-sonic-visualiser-Desktop_Qt_5_11_0_MinGW_32bit-Release@) and copy the file @checker\release\vamp-plugin-load-checker.exe@ to the top-level @release@ directory

If the build was successful, you should now be able to run Sonic Visualiser from within the IDE. (You can't yet run the binary from the Windows Explorer, as Qt and other dependencies won't be found.)

You can also run individual unit test suites by selecting them as target executable in Qt Creator.

h4. Build using batch script

h4. Installer

The principle here is:


# Copy dependent libraries into the @release@ directory within the build dir, so that Sonic Visualiser can be run directly without IDE support
# Package up the installer using the @build.cmd@ script that runs WiX

For the Qt 5.7 installation I'm currently using, this means:

* From @C:\Qt57\5.7\mingw53_32\bin@, copy the following files into the @release@ directory: @Qt5Core.dll@ @Qt5Gui.dll@ @Qt5Network.dll@ @Qt5Svg.dll@ @Qt5Widgets.dll@ @Qt5Xml.dll@ @libgcc_s_dw2-1.dll@ @libstdc++-6.dll@ @libwinpthread-1.dll@
* From @C:\Qt57\5.7\mingw53_32\plugins\platforms@, copy the following files: @qminimal.dll@ @qwindows.dll@
*
Check out that the correct branch (probably @default@ as described above) Sonic Visualiser executable in that directory starts up properly when double-clicked
* Open In a command prompt and window, cd to the main @sonic-visualiser@ @deploy\win32@ directory
* Run @deploy\win64\build-32.bat@ (yes, it is
in the @win64@ directory) Sonic Visualiser source tree and run @.\build.cmd@

The built executables will be left in @build-win32\release@.

Note that the build @build.cmd@ script also copies in has the necessary Qt and C++ runtime libraries for path to the executables, shadow build folder hardcoded, so it should be possible you may need to run the resulting application just by opening @build-win32\release\Sonic Visualiser.exe@ from Windows Explorer. tweak that.

h2. 64-bit build and installer

h4. Build with Qt Creator

* Check out the correct branch (probably @default@ as described above)
* Run @.\repoint @./vext install@ to get the code dependencies
* Open the main @sonic-visualiser.pro@ project in Qt Creator
* Set up a *release build* using *Desktop Qt 5.11.0 5.7.0 MSVC 64-bit* as a *shadow build*
* "Run qmake" and "Rebuild All"

If the code is already checked out for a 32-bit build, then it should be possible to add or select the 64-bit MSVC "kit" as a target in Qt Creator and then build that from the same directory as a separate shadow build, rather than having to check out the code again.

And we have the same unresolved manual step as for the 32-bit build:

* Go to the build directory (e.g. @build-sonic-visualiser-Desktop_Qt_5_11_0_MSVC2015_64bit-Release@) @build-sonic-visualiser-Desktop_Qt_5_7_0_MSVC2015_64bit-Release@) and copy the file @checker\release\vamp-plugin-load-checker.exe@ to the top-level @release@ directory

If the build was successful, you should now be able to run Sonic Visualiser from within the IDE. (You can't yet run the binary from the Windows Explorer, as Qt and other dependencies won't be found.)

You can also run individual unit test suites by selecting them as target executable in Qt Creator.

h4. Build using batch script Installer

The 64-bit installer needs files from both the 64- and 32-bit builds.

The principle is:


* Check out # Copy dependent 64-bit libraries into the correct branch (probably @default@ as described above) @release@ directory within the build dir, so that Sonic Visualiser can be run directly without IDE support
* Open a command prompt and cd # Copy helper programs from the 32-bit build into the @release@ directory, renaming them to have @-32@ at the main @sonic-visualiser@ directory ends of their names
* Run @deploy\win64\build-64.bat@

The built executables will be left in @build-win64\release@.

Note
# Copy (the smaller number of) dependent 32-bit libraries that the build 32-bit helper programs need into the @release@ directory
# Package up the installer using the @build.cmd@
script also copies in that runs WiX

For
the necessary Qt and C++ runtime libraries for 5.7 installation I'm currently using, this means:

* From @C:\Qt57\5.7\msvc2015_64\bin@, copy
the executables, so it should be possible to run following files into the resulting application just by opening @build-win32\release\Sonic Visualiser.exe@ from Windows Explorer.

h2. Installers

We create both
@release@ directory: @Qt5Core.dll@ @Qt5Gui.dll@ @Qt5Network.dll@ @Qt5Svg.dll@ @Qt5Widgets.dll@ @Qt5Xml.dll@
* From @C:\Qt57\5.7\msvc2015_64\plugins\platforms@, copy the following files: @qminimal.dll@ @qwindows.dll@
* From the
32-bit build's @release@ directory, copy the files @vamp-plugin-load-checker.exe@ and @piper-vamp-simple-server.exe@, renaming them to @vamp-plugin-load-checker-32.exe@ and @piper-vamp-simple-server-32.exe@ respectively (so as not to overwrite the existing 64-bit installers at versions of these files)
* From @C:\Qt57\5.7\mingw53_32\bin@, copy: @libgcc_s_dw2-1.dll@ @libstdc++-6.dll@ @libwinpthread-1.dll@
* (From
the same time using SV build directory's @sv-dependency-builds/win64/lib@ directory: copy @libsndfile-1.dll@ -- this is technically optional as the installer script @deploy\win64\build-and-package.bat@. This does a complete rebuild from clean every time will include it is run.

The 64-bit installer needs files from both
regardless, but it's necessary if you want to test SV by double-clicking)
* Check that
the 64- Sonic Visualiser executable in that directory starts up properly when double-clicked
* In a command prompt window, cd to the @deploy\win64@ directory in the Sonic Visualiser source tree
and 32-bit builds. run @.\build.cmd@

The general principle is Note that the @build.cmd@ script runs both has the @build-32@ and @build-64@ batch scripts, then runs WiX twice using two separate installer definition files. The 32-bit installer is defined by @deploy\win32\sonic-visualiser.wxs@ and path to the 64-bit one by @deploy\win64\sonic-visualiser.wxs@. Both files have the SV version and C++-runtime-related paths shadow build folder hardcoded, so they will you may need inspecting and updating to tweak that. The WiX installer config file (@sonic-visualiser.wxs@) also has some hardcoded paths, for each new release. the Microsoft Visual Studio runtime libraries in @C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x64\Microsoft.VC140.CRT@, which may need to be updated.