Noob problem - Building VST3s doesn't work

Just starting out with the VST3 SDK, I first tried my hand at something quite simple (basically just following along with the Project Generator tutorial, but with more parameters and my own processing logic instead of the gain - I don’t think this is what causes my issue though), however when building it, neither the VST3 test host nor FL Studio seem to recognise my VST3.
I’m guessing (as it isn’t really documented) that the file in (Project)/build/VST3/Debug/Split_Times.vst3/Contents/x86_64-win/ is the complete VST3 file after building, but when copying it to C:/program files/common files/VST3, it doesn’t work (Refuses to show up in the test host, FL recognises that it’s there but says that there’s an error when trying to do anything with it).

I’m building using cmake-gui, CMake settings are all the default settings, the exception being that I tried having CMAKE_INSTALL_PREFIX and SMTG_PLUGIN_TARGET_PATH set as locations on my D: drive first.

After a different user over at a different post said it was an issue with stuff being on different drives (My project folder is on the D: drive), I tried compiling it with CMAKE_INSTALL_PREFIX as C:/Program Files/Itisdud/Split_Times , SMTG_PLUGIN_TARGET_PATH being C:/Program Files/Common Files/VST3 , to no avail.

Is there anything obvious I’m getting wrong here?

See here for what a VST3 plug-in looks like: Plug-in Format Structure - VST - Steinberg Developer Help
It’s not the single file you copied alone.

Thank you! I now tried copying the entire Split_Times/build/VST3/Debug/Split_Times.vst3 folder, which contains both the Contents/Resources and Contents/x86_64-win folder (which, to my understanding, is all that’s needed for the VST to run on a 64-Bit windows machine), however that didn’t work either. Where would I go from here when trying to fix this?

Does it validate with the validator included in the SDK?

To me it looks like it does, at least I can’t find anything saying "validation failed"or something like that in the build log - I’ll paste the log here just in case:

Rebuild started...
1>------ Rebuild All started: Project: ZERO_CHECK, Configuration: Debug x64 ------
1>Checking Build System
2>------ Rebuild All started: Project: base, Configuration: Debug x64 ------
3>------ Rebuild All started: Project: pluginterfaces, Configuration: Debug x64 ------
4>------ Rebuild All started: Project: vstgui, Configuration: Debug x64 ------
5>------ Rebuild All started: Project: vstgui_standalone, Configuration: Debug x64 ------
6>------ Skipped Rebuild All: Project: cmake_modules, Configuration: Debug x64 ------
6>Project not selected to build for this solution configuration 
2>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/base/CMakeLists.txt
3>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/pluginterfaces/CMakeLists.txt
4>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/CMakeLists.txt
2>baseiids.cpp
3>conststringtable.cpp
2>fbuffer.cpp
2>fdebug.cpp
2>fdynlib.cpp
2>fobject.cpp
2>fstreamer.cpp
2>fstring.cpp
2>timer.cpp
2>updatehandler.cpp
2>fcondition.cpp
2>flock.cpp
3>coreiids.cpp
3>funknown.cpp
3>ustring.cpp
5>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/vstgui4/vstgui/standalone/CMakeLists.txt
4>animations.cpp
4>animator.cpp
4>timingfunctions.cpp
4>cbitmap.cpp
4>cbitmapfilter.cpp
4>ccolor.cpp
4>cdatabrowser.cpp
4>cdrawcontext.cpp
4>cdrawmethods.cpp
4>cdropsource.cpp
4>cfileselector.cpp
4>cfont.cpp
4>cframe.cpp
5>application.cpp
5>genericalertbox.cpp
5>shareduiresources.cpp
5>uidescriptionwindowcontroller.cpp
5>window.cpp
5>value.cpp
5>win32application.cpp
5>win32async.cpp
5>win32commondirectories.cpp
5>win32menu.cpp
5>win32preference.cpp
5>win32window.cpp
4>cgradientview.cpp
4>cgraphicspath.cpp
4>clayeredviewcontainer.cpp
4>clinestyle.cpp
4>coffscreencontext.cpp
4>cautoanimation.cpp
4>cbuttons.cpp
4>ccolorchooser.cpp
4>ccontrol.cpp
4>cfontchooser.cpp
4>cknob.cpp
4>clistcontrol.cpp
4>cmoviebitmap.cpp
4>cmoviebutton.cpp
4>coptionmenu.cpp
4>cparamdisplay.cpp
4>cscrollbar.cpp
4>csearchtextedit.cpp
4>csegmentbutton.cpp
4>cslider.cpp
4>cspecialdigit.cpp
4>csplashscreen.cpp
4>cstringlist.cpp
3>pluginterfaces.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\lib\Debug\pluginterfaces.lib
4>cswitch.cpp
4>ctextedit.cpp
4>ctextlabel.cpp
4>cvumeter.cpp
4>cxypad.cpp
4>copenglview.cpp
4>cpoint.cpp
4>crect.cpp
4>crowcolumnview.cpp
4>cscrollview.cpp
4>cshadowviewcontainer.cpp
4>csplitview.cpp
4>cstring.cpp
2>base.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\lib\Debug\base.lib
4>ctabview.cpp
7>------ Rebuild All started: Project: sdk_common, Configuration: Debug x64 ------
4>ctooltipsupport.cpp
4>cview.cpp
4>cviewcontainer.cpp
4>cvstguitimer.cpp
4>genericstringlistdatabrowsersource.cpp
4>pixelbuffer.cpp
4>platformfactory.cpp
4>fileresourceinputstream.cpp
4>genericoptionmenu.cpp
4>generictextedit.cpp
4>vstguidebug.cpp
4>vstguiinit.cpp
7>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/public.sdk/CMakeLists.txt
4>d2dbitmap.cpp
4>d2ddrawcontext.cpp
4>d2dfont.cpp
4>d2dgraphicspath.cpp
4>win32datapackage.cpp
4>win32dragging.cpp
7>commoniids.cpp
7>openurl.cpp
7>systemclipboard_win32.cpp
7>threadchecker_linux.cpp
7>threadchecker_win32.cpp
7>vstpresetfile.cpp
4>win32factory.cpp
5>vstgui_standalone.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\lib\Debug\vstgui_standalone.lib
4>win32frame.cpp
4>win32openglview.cpp
4>win32optionmenu.cpp
4>win32resourcestream.cpp
4>win32support.cpp
4>win32textedit.cpp
4>winfileselector.cpp
4>winstring.cpp
4>wintimer.cpp
7>sdk_common.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\lib\Debug\sdk_common.lib
8>------ Rebuild All started: Project: sdk, Configuration: Debug x64 ------
9>------ Rebuild All started: Project: sdk_hosting, Configuration: Debug x64 ------
9>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/public.sdk/CMakeLists.txt
8>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/public.sdk/CMakeLists.txt
9>connectionproxy.cpp
9>eventlist.cpp
9>hostclasses.cpp
9>module.cpp
9>parameterchanges.cpp
9>pluginterfacesupport.cpp
9>processdata.cpp
9>stringconvert.cpp
9>vstinitiids.cpp
8>pluginview.cpp
8>pluginfactory.cpp
8>moduleinit.cpp
8>stringconvert.cpp
8>vst2persistence.cpp
8>vstaudioeffect.cpp
8>vstbus.cpp
8>vstcomponent.cpp
8>vstcomponentbase.cpp
8>vsteditcontroller.cpp
8>vstinitiids.cpp
8>vstnoteexpressiontypes.cpp
8>vstparameters.cpp
8>vstrepresentation.cpp
4>vstgui.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\lib\Debug\vstgui.lib
10>------ Rebuild All started: Project: vstgui_uidescription, Configuration: Debug x64 ------
10>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/vstgui4/vstgui/uidescription/CMakeLists.txt
9>sdk_hosting.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\lib\Debug\sdk_hosting.lib
11>------ Rebuild All started: Project: validator, Configuration: Debug x64 ------
11>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/public.sdk/samples/vst-hosting/validator/CMakeLists.txt
10>compresseduidescription.cpp
10>cstream.cpp
10>uiattributes.cpp
10>uicontentprovider.cpp
10>uidescription.cpp
10>uiviewcreator.cpp
10>uiviewfactory.cpp
10>uiviewswitchcontainer.cpp
10>xmlparser.cpp
10>uidesclist.cpp
10>uijsonpersistence.cpp
10>uinode.cpp
8>sdk.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\lib\Debug\sdk.lib
11>plugprovider.cpp
11>memorystream.cpp
11>busactivation.cpp
11>busconsistency.cpp
11>businvalidindex.cpp
11>checkaudiobusarrangement.cpp
11>scanbusses.cpp
11>sidechainarrangement.cpp
11>editorclasses.cpp
11>midilearn.cpp
11>midimapping.cpp
11>scanparameters.cpp
10>uixmlpersistence.cpp
10>uiactions.cpp
11>suspendresume.cpp
11>terminit.cpp
10>uiattributescontroller.cpp
11>keyswitch.cpp
10>uibitmapscontroller.cpp
10>uicolor.cpp
11>noteexpression.cpp
11>automation.cpp
10>uicolorchoosercontroller.cpp
10>uicolorscontroller.cpp
11>process.cpp
11>processcontextrequirements.cpp
11>processformat.cpp
11>processinputoverwriting.cpp
10>uicolorslider.cpp
11>processtail.cpp
10>uicrosslines.cpp
11>processthreaded.cpp
11>silenceflags.cpp
11>silenceprocessing.cpp
10>uidialogcontroller.cpp
11>speakerarrangement.cpp
10>uieditcontroller.cpp
10>uieditmenucontroller.cpp
10>uieditview.cpp
11>variableblocksize.cpp
11>bypasspersistence.cpp
11>invalidstatetransition.cpp
11>repeatidenticalstatetransition.cpp
11>validstatetransition.cpp
10>uifocussettingscontroller.cpp
11>testbase.cpp
11>checkunitstructure.cpp
10>uifontscontroller.cpp
11>scanprograms.cpp
11>scanunits.cpp
11>vsttestsuite.cpp
11>main.cpp
11>usediids.cpp
10>uigradientscontroller.cpp
10>uigridcontroller.cpp
10>uioverlayview.cpp
10>uiselection.cpp
11>validator.cpp
11>module_win32.cpp
10>uitagscontroller.cpp
10>uitemplatecontroller.cpp
10>uitemplatesettingscontroller.cpp
10>uiundomanager.cpp
10>uiviewcreatecontroller.cpp
10>animationsplashscreencreator.cpp
10>animknobcreator.cpp
10>checkboxcreator.cpp
10>controlcreator.cpp
10>gradientviewcreator.cpp
10>kickbuttoncreator.cpp
10>knobcreator.cpp
10>layeredviewcontainercreator.cpp
10>moviebitmapcreator.cpp
10>moviebuttoncreator.cpp
10>multibitmapcontrolcreator.cpp
10>multilinetextlabelcreator.cpp
10>onoffbuttoncreator.cpp
10>optionmenucreator.cpp
10>paramdisplaycreator.cpp
10>rockerswitchcreator.cpp
10>rowcolumnviewcreator.cpp
10>scrollviewcreator.cpp
10>searchtexteditcreator.cpp
10>segmentbuttoncreator.cpp
10>shadowviewcontainercreator.cpp
10>sliderviewcreator.cpp
10>splitviewcreator.cpp
10>stringlistcontrolcreator.cpp
10>switchcreators.cpp
10>textbuttoncreator.cpp
10>texteditcreator.cpp
10>textlabelcreator.cpp
10>uiviewswitchcontainercreator.cpp
10>viewcontainercreator.cpp
10>viewcreator.cpp
10>vumetercreator.cpp
10>xypadcreator.cpp
11>validator.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\bin\Debug\validator.exe
10>vstgui_uidescription.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\lib\Debug\vstgui_uidescription.lib
12>------ Rebuild All started: Project: vstgui_support, Configuration: Debug x64 ------
13>------ Rebuild All started: Project: VST3Inspector, Configuration: Debug x64 ------
12>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/CMakeLists.txt
13>Building Custom Rule D:/programme/VST3Dev/VST_SDK/VST3_SDK/public.sdk/samples/vst-hosting/inspectorapp/CMakeLists.txt
12>vst3groupcontroller.cpp
12>vst3padcontroller.cpp
12>vst3editor.cpp
12>vstguieditor.cpp
12>vstgui_win32_bundle_support.cpp
13>app.cpp
13>window.cpp
13>coreiids.cpp
13>module.cpp
13>stringconvert.cpp
13>module_win32.cpp
12>vstgui_support.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\lib\Debug\vstgui_support.lib
14>------ Rebuild All started: Project: Split_Times, Configuration: Debug x64 ------
13>VST3Inspector.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\bin\Debug\VST3Inspector\VST3Inspector.exe
14>Building Custom Rule D:/programme/VST3Dev/Split_times/Split_Times/CMakeLists.txt
14>split_timesprocessor.cpp
14>split_timescontroller.cpp
14>split_timesentry.cpp
14>dllmain.cpp
14>[SMTG] Copied resource/split_timeseditor.uidesc to D:/programme/VST3Dev/Split_times/Split_Times/build/VST3/Debug/Split_Times.vst3/Contents/Resources
14>[SMTG] Copied resource/0975AB4EEEAF5526ADFF1A22B0343E02_snapshot.png to D:/programme/VST3Dev/Split_times/Split_Times/build/VST3/Debug/Split_Times.vst3/Contents/Resources/Snapshots
14>[SMTG] Copied resource/0975AB4EEEAF5526ADFF1A22B0343E02_snapshot_2.0x.png to D:/programme/VST3Dev/Split_times/Split_Times/build/VST3/Debug/Split_Times.vst3/Contents/Resources/Snapshots
14>   Creating library D:/programme/VST3Dev/Split_times/Split_Times/build/lib/Debug/Split_Times.lib and object D:/programme/VST3Dev/Split_times/Split_Times/build/lib/Debug/Split_Times.exp
14>Split_Times.vcxproj -> D:\programme\VST3Dev\Split_times\Split_Times\build\VST3\Debug\Split_Times.vst3\Contents\x86_64-win\Split_Times.vst3
14>[SMTG] Delete previous link...
14>D:\programme\VST3Build\Split_Times\Split_Times.vst3 konnte nicht gefunden werden
14>[SMTG] Creation of the new link...
14>symbolische Verknüpfung erstellt für D:\programme\VST3Build\Split_Times\Split_Times.vst3 <<===>> D:\programme\VST3Dev\Split_times\Split_Times\build\VST3\Debug\Split_Times.vst3
14>[SMTG] Finished.
15>------ Skipped Rebuild All: Project: ALL_BUILD, Configuration: Debug x64 ------
15>Project not selected to build for this solution configuration 
========== Rebuild All: 13 succeeded, 0 failed, 2 skipped ==========

Going to try and just build the tutorial code without any modifications in a moment to see whether it’s a problem with building in general or just my code.

No, the validator is not running in your build.
Just build the SDK as described in the documentation and then run the validator from the command line. If you run it with the “-list” option, it shows you all installed plug-ins. If your plug-in is listed you can run the validator again with the path to your plug-in to check if it passes validation.

I’m not all too familiar with the command line/the validator, how would I run the validator?

After building the SDK, there will be a validator executable in bin/Debug in your build directory.
Navigate to this location in cmd.exe (or PowerShell) and then just enter
validator.exe -list

Thank you - in the meantime i tried compiling it via the console, which did also start the validator. It failed at [Scan Parameters]:

  [Scan Parameters]
  Info:  ===Scan Parameters ====================================
  Info:  This component exports 9 parameter(s)
  Info:     Parameter 000 (id=0): [title="InMode"] [unit=""] [type = D, default = 0.000000, unit = 0]
  Info:  Parameter 000 (id=0) is kIsReadOnly, no need to be kIsWrapAround too!
EXEC : error : Parameter 001 (id=0): ID already used by idx=000!!! [D:\programme\VST3Dev\Split_times\Split_Times\build\
Split_Times.vcxproj]
  [XXXXXXX Failed]

Parameter 000 (inMode) uses the ID 102 (assuming that the IDs in [plugName]cids.h are what’s referred to), as it did in the tutorial. For the other parameters, I just incremented the ID - so Parameter 001 (which presumably is the second parameter) uses the ID 103, the next uses 104 and so on. Is the field of numbers usable for IDs there limited or where would the issue here be?

ETA: this is what the parameter enum (made pretty much the way the tutorial does) looks like:

enum STParams : Steinberg::Vst::ParamID
{
	kInModeId = 102,
	kOutModeId = 103,
	kLTimeId = 104,
	kRTimeId = 105,
	kLRandomId = 106,
	kRRandomId = 107,
	kLFineId = 108,
	kRFineId = 109,
	kFillModeId = 110,
};

Update:
It didn’t compile/got the wrong ID because I didn’t add a kCanAutomate flag for some of the parameters. Fixed that, now it does show up in the VST Test Host (which crashes when trying to test it. lol). Seems to run okay in FL Studio so far. Gonna flag this as the solution.