guide: Compiling Ctrlr on Windows - unityconstruct/CtrlrDocs GitHub Wiki
Compiling Ctrlr: For Windows 10
Sjoerd W Bijleveld
Ported from a wonderfully crafted PDF by author - This document describes the steps I took to compile Ctrlr with Visual Studio 2019 on Windows 10.
- Disclaimer: I’m primarily a Mac/Apple user, so I’m probably not able to answer typical technical Windows/Visual Studio questions.
- Below is the About
Ctrlr
window of the compiled version.
The publishing date of this version is: April 8, 2021
My version of Visual Studio 2019 is: 16.9.4
and I installed it for the following 2 workloads:
• Universal Windows Platform development;
• Desktop development with C++.
I did use Windows 10 Pro English running virtual on my iMac with VMWare Fusion. I did use a fresh (but rather old) installment of Windows 10
and before I could install and run Visual Studio 19
, I had to do every update available for Windows 10. (My copy of Windows 10 dates back from August 2015 and was originally probable too old.)
Download the Ctrlr source files
- The first thing you have to do of course is download the latest master from the
Ctrlr Github
[https://github.com/RomanKubiak/ctrlr]. First step you have to after downloading is unzippingboost.zip
- You will find this file in
..\ctrlr-master\Source\Misc\boost\
- Just unzip it and do nothing further.
Run shell scripts when compiler complains about "final"
- If the compiler complains you need to run shell scripts, otherwise you're lucky and may skip this part and continue with the section
Using the Projucer app
! - I refer to this comment of
Roman Kubiak
: [https://github.com/RomanKubiak/ctrlr/commit/c1f67d2f4033cb9f5dd20a123854fcddcd99b81d] - This means that part of compiling
Ctrlr
is first running so called shell scripts (files with extension .sh). - These scripts only run in a Unix-like environment and from the terminal.
Cygwin64
does provide this functionality for Windows, so first thing I had to do was installingCygwin64
: [https://cygwin.com]- In the
Ctrlr
folder I found 2 .sh files. I decided to run both, because both seem to address the “final” issue.
Running the shell scripts
- Open
Cygwin64 Terminal
. Typecd
(without the quotes) and drag yourCtrlr
folder into the terminal window and hitENTER
. This way you set the terminal to theCtrlr
directory. - Next type ‘bash’, again without the quotes, and drag the script file ‘remove_finals_from_JUCE.sh (located in the scripts folder) into the terminal window and hit
ENTER
. A long list of files scrolls by. - The window looks like this:
- Do the same with the script file
remove_final.sh
found in theJUCE
directory. - I’m not sure if this is really needed, but it seemed not doing any harm.
Using the Projucer app
- Projucer is needed as an intermediate step to load the
Ctrlr
project properly intoVisual Studio
. - So after you have downloaded and installed
JUCE
go to theJUCE
folder, where you’ll findProjucer.exe
. - Start the program.
Building Ctrlr
- Before you export to Visual Studio make sure you set the right
global paths
. Path to JUCE
is the path to theJuce
folder in yourctrlr-master
folder.Path to JUCE Modules
is the path to the modules folder inside theJuce
folder of thectrlr-master
folder.
- Now choose
File>Open
... and pick the file:\ctrlr-master\Ctrlr.jucer
- This file contains all the (source) files you need to build Ctrlr. Click on the export button of Projucer.
Visual Studio
will start and the Ctrlr project is loaded.
Building the Ctrlr_SharedCode
- First step in building is to build the
Ctrlr_SharedCode
. - Before you can do the actual building you have to adjust some settings in
Visual Studio
. - The first one is the set the
Preferred Build Tool Architecture
to64-bit (x64)
.
- Choose option
Properties
and in theProperties
windowchoose Advanced
and set thearchitecture
:
- The second setting has to do with the so called
C/C++ Output File
. - Before you set this, make sure you have selected the
Ctrlr_SharedCode
item in theSolution Explorer
side pane, because the setting will affect this item.
- Now go again to
Project>Properties
(the same menu option when setting theBuild Architecture
, see above) and chooseC/C++> Output Files>Program Database file Name
, and choose (or in case of not showing the text, type):<inherit from parent or project defaults>
- This has to be done because of the problem discussed here.
- Click
OK
and set the build toRelease
andx64
, you may choose otherwise:
- Next start the actual building:
- After a few minutes and many warnings, mostly of type
C4459
, if all is well the build succeeds. Next task is building theCtrlr_StandalonePlugin
project.
Building Ctrlr_StandalonePlugin
- In fact the procedure for building this plugin is pretty much the same as for the
Ctrlr_SharedCode
project. - First you select in the
Solution Explorer
theCtrlr_StandalonePlugin
item and then make sure that firstly thePreferred Build Tool Architecture is set to 64-bit (x64)
as explained in the build forCtrlr_SharedCode
section above and secondly theProgram Database File Name for the C/C++ Output File
is set to<inherit from parent or project defaults>
- After this settings you can build the plugin, which takes a rather long time, so be patient.
- If again all is well, the build succeeds.
- You will find the generated
Ctrlr-x64.exe
in:..\ctrlr-master\Builds\VisualStudio2019\x64\Release\Standalone Plugin\
- So this is the build for
CTRLR 64-bit
. Building for32-bit
does succeed only in Debug mode, but this build gives problems when running on a computer withoutVisual Studio
installed or the proper redistributableVC_redist.x86
for the32-bit
architecture installed. - (See my post further down in this thread about running the application without an installment of
Visual Studio
.)
About this build
- I did test the application on my laptop with
Windows 7
, using a simpleUSB MIDI
interface. - The interface was connected to my
Kurzweil K2500R
. - The panel for this instrument loaded OK and the
K2500R
responded as expected to the various sysex messages send from this panel. - I will test this build further and keep you of course posted about my findings.