guide: Dev Environment Setup ‐ Abbridged - unityconstruct/CtrlrDocs GitHub Wiki
- Note: VS2019 might be minimum version for THIS branch, THIS COMMIT & anything after
- Universal Windows Platform development
- Desktop development with C++
- VS 2019 Build Tools (v142) [if using VS2022, not needed if building on VS2019]
- on GitHub
- https://github.com/damiensellier/CtrlrX/releases/tag/5.6.0
- master: commit: 3f9819e
- looks like this commit tagged 5.6.0
- Clone to
D:\source\repos\
cd D:\source\repos\
git clone https://github.com/RomanKubiak/ctrlr- Why not just create a new branch now?
master-init - unzip
D:\source\repos\ctrlr\Source\Misc\boost\boost.zip->*\boost
- Ctrlr 5.6.0 appears to use JUCE 6.0.8
- https://github.com/juce-framework/JUCE/releases/tag/6.0.8
- so in order for JUCE to correctly parse things, the versions MUST MATCH
- V7 induced syntax errors in the 1000s, with missing semi colons, etc
- I don't like installing ANYTHING, so pulled the ZIP instead of installer
- Extracted to
D:\Program Files\JUCE608
- Extracted to
- Start with
D:\Program Files\JUCE608\Projucer.exe - Globals
- Prog Path:
D:\source\repos\ctrlr\JUCE - Modules Path:
D:\source\repos\ctrlr\JUCE\modules
- Prog Path:
- File>Open:
D:\source\repos\ctrlr\Ctrlr.jucer- If JUCE throws an
Invalid JUCE Pathmessage... likely you are not using correct JUCE version- double-check the Globals Path
- check JUCE version is
6.0.8(as of this note - based off ctrlr:master:5.6.0:3f9819e)
- A drop down list showing
Visual Studio 2019should be shown- There's no EXPORT button or anything helpful like that
- so click the VS icon & pray VS2022(or 2019) starts loading
- If JUCE throws an
-
All 4 projects build success and Project>Properties config is the same for each
-
reminder: JUCE =>
D:\source\repos\ctrlr\JUCED:\source\repos\ctrlr\JuceLibraryCode
-
reminder: lua =>
D:\source\repos\ctrlr\Source\Misc\luabind\srcD:\source\repos\ctrlr\Source\Misc\lua\src
-
on first load, if VS version mismatch found, DO NOT update projects (requires Build Tools VS2019 (v142))
- leave unchanged
-
Init SLN Config
- Build: Release | x64
- INIT PROJ CONFIG:
- Select project
-
Project>Properties>Advanced>Preferred Build Tool Architecture: 64-bit (x64) -
Project Properties>Configuration Properties>C/C++>OutputFiles:- FROM:
$(IntDir)\ - TO:
<inherit from parent or project defaults>
- FROM:
- Build
- INIT PROJ CONFIG:
Ctrlr_SharedCode- at this point, only need to config
Ctrlr_SharedCode- so select it -
Project>Properties>Advanced>Preferred Build Tool Architecture: 64-bit (x64) -
Project Properties>Configuration Properties>C/C++>OutputFiles:- FROM:
$(IntDir)\ - TO:
<inherit from parent or project defaults>
- FROM:
- at this point, only need to config
-
Ctrlr_SharedCode>Build
- generates:
D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\Shared Code\Ctrlr-x64.lib
1>Ctrlr_SharedCode.vcxproj -> D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\Shared Code\Ctrlr-x64.lib
1>Done building project "Ctrlr_SharedCode.vcxproj".
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Build completed at 5:40 PM and took 03:32.808 minutes ==========
- INIT PROJ CONFIG:
Ctrlr_StandalonePlugin- at this point, only need to config
Ctrlr_StandalonePlugin- so select it -
Project>Properties>Advanced>Preferred Build Tool Architecture: 64-bit (x64) -
Project Properties>Configuration Properties>C/C++>OutputFiles:- FROM:
$(IntDir)\ - TO:
<inherit from parent or project defaults>
- FROM:
- at this point, only need to config
-
Ctrlr_StandalonePlugin>Build
- JUCE lib:
include_juce_audio_plugin_client_Standalone.obj- didn't see this in the build log, but didn't look hard either
- generates:
D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\Standalone Plugin\Ctrlr-x64.exe - may or maynot have dependencies on
Ctrlr-x64.lib, but based on size it seems the exe is trulystandalone - the build process may depend on the lib (rather than rebuild it blindly for each referencing project)
1>Ctrlr_StandalonePlugin.vcxproj -> D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\Standalone Plugin\Ctrlr-x64.exe
1>Done building project "Ctrlr_StandalonePlugin.vcxproj".
========== Build: 1 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Build completed at 5:51 PM and took 07:17.676 minutes ==========
- INIT PROJ CONFIG:
Ctrlr_VST- at this point, only need to config
Ctrlr_VST- so select it -
Project>Properties>Advanced>Preferred Build Tool Architecture: 64-bit (x64) -
Project Properties>Configuration Properties>C/C++>OutputFiles:- FROM:
$(IntDir)\ - TO:
<inherit from parent or project defaults>
- FROM:
- at this point, only need to config
-
Ctrlr_VST>Build
- JUCE lib:
include_juce_audio_plugin_client_VST2.cpp - generates:
D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\VST\Ctrlr-x64.dll
Started at 5:27 PM...
1>------ Build started: Project: Ctrlr_VST, Configuration: Release x64 ------
1>include_juce_audio_plugin_client_VST2.cpp
1> Creating library D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\VST\Ctrlr-x64.lib and object D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\VST\Ctrlr-x64.exp
1>Generating code
1>D:\source\repos\ctrlr\Source\Core\CtrlrInlineUtilitiesGUI.h(87): warning C4715: 'gui::colourSchemeFromProperty': not all control paths return a value
1>D:\source\repos\ctrlr\Source\MIDI\CtrlrMidiInputComparatorSingle.cpp(239): warning C4702: unreachable code
1>Finished generating code
1>Ctrlr_VST.vcxproj -> D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\VST\Ctrlr-x64.dll
1>Done building project "Ctrlr_VST.vcxproj".
========== Build: 1 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Build completed at 5:35 PM and took 07:40.480 minutes ==========
- INIT PROJ CONFIG:
Ctrlr_VST3- at this point, only need to config
Ctrlr_VST3- so select it -
Project>Properties>Advanced>Preferred Build Tool Architecture: 64-bit (x64) -
Project Properties>Configuration Properties>C/C++>OutputFiles:- FROM:
$(IntDir)\ - TO:
<inherit from parent or project defaults>
- FROM:
- at this point, only need to config
-
Ctrlr_VST3>Build
- JUCE lib:
include_juce_audio_plugin_client_VST3.cpp - generates:
D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\VST3\Ctrlr-x64.vst3
Build started at 5:59 PM...
1>------ Build started: Project: Ctrlr_VST3, Configuration: Release x64 ------
1>include_juce_audio_plugin_client_VST3.cpp
1> Creating library D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\VST3\Ctrlr-x64.lib and object D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\VST3\Ctrlr-x64.exp
1>Generating code
1>D:\source\repos\ctrlr\Source\Core\CtrlrInlineUtilitiesGUI.h(87): warning C4715: 'gui::colourSchemeFromProperty': not all control paths return a value
1>D:\source\repos\ctrlr\Source\MIDI\CtrlrMidiInputComparatorSingle.cpp(239): warning C4702: unreachable code
1>Finished generating code
1>Ctrlr_VST3.vcxproj -> D:\source\repos\ctrlr\Builds\VisualStudio2019\x64\Release\VST3\Ctrlr-x64.vst3
1>Done building project "Ctrlr_VST3.vcxproj".
========== Build: 1 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Build completed at 6:07 PM and took 07:43.849 minutes ==========
- Inferred the JUCE version by
D:\source\repos\ctrlr\JUCE\ChangeList.txt: - README.md has
System Requirements&Support Targets
## Minimum System Requirements
#### Building JUCE Projects
- __macOS/iOS__: macOS 10.11 and Xcode 7.3.1
- __Windows__: Windows 8.1 and Visual Studio 2015 64-bit
- __Linux__: GCC 4.8 (for a full list of dependencies, see
[here](/docs/Linux%20Dependencies.md)).
- __Android__: Android Studio on Windows, macOS or Linux
#### Deployment Targets
- __macOS__: macOS 10.7
- __Windows__: Windows Vista
- __Linux__: Mainstream Linux distributions
- __iOS__: iOS 9.0
- __Android__: Jelly Bean (API 16)- looks like JUCE libraries are pulled in by including cpp files that JUCE generates:
include_juce_audio_plugin_client_VST2.cpp - The initial JUCE Open>Export likely generates these for consumption by VS IDE
- Ctrlr_SharedCode : [\Shared Code\Ctrlr-x64.lib]
- Class Library used by other projects
- Ctrlr_StandalonePlugin
- Core IDE
- Ctrlr_VST
- Self-Explanatory, creates VST(2?) dll
- Ctrlr_VST3
- Self-Explanatory, creates VST3 dll
D:\source\repos\ctrlr\JuceLibraryCode\JuceHeader.h- Saw mentions of VST3 issues with unique VST3 ID
- Possible this is where it needs to be changed
- Obviously changing source files requires.... REBUILD
- might even require a re-export from JUCE, though not likely
#if ! JUCE_DONT_DECLARE_PROJECTINFO
namespace ProjectInfo
{
const char* const projectName = "Ctrlr";
const char* const companyName = "Instigator";
const char* const versionString = "5.5";
const int versionNumber = 0x50500;
}
#endifD:\source\repos\ctrlr\JuceLibraryCode\JucePluginDefines.h- Guessing this holds GlobalVars and is code generated by the JUCE, so DO NOT CHANGE lest changes get overwritten
- DataType seems to be autodetected, with string being in ""'s
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#ifndef JucePlugin_Vst3Category
#define JucePlugin_Vst3Category "Instrument|Synth"
#endif
#include <juce_audio_plugin_client/juce_audio_plugin_client_Standalone.cpp>
#include <juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp>
#include <juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp>