Hi Dev folks,
got a newbie (both to Rack & C++) question:
Now that my plugin has been released on the Library, I want to be able to work on bug fixes and new features, but I would also like to be able to check out downloaded patches that use my plugin.
Is there a way to have both the Library version of my plugin installed into VCV rack as well as my locally built version (that I may have made code changes to) at the same time?
At the moment I am seeing an issue with the version number of my locally built plugin:
[2.603 warn src/plugin.cpp:158] Could not load plugin C:\Users\danti\DOCUME~1/Rack/plugins-v1/DanTModules: Plugin version 2.0.0 does not match Rack ABI version 1
Your plugin version has to start with 1.x in Rack v1, you can’t use version „2.0.0“.
Also, you can’t use plugins with the same slug the same time. The easiest way is to keep separate folders of Rack for development builds and release builds.
Ah ok, thats one easy fix then, thank you.
I guess v1.1.0 would be the right choice for a major update and v1.0.1 for a minor one?
Would it be reasonable to have a different slug based on a build flag, or something that can be changed at build time?
I’m doing it this way, major updates get 1.x.0 incremented, bugfix releases get 1.0.x but this is totally up to you, many developers handle version numbering differently.
I think you could do it this way but I’m not sure if it is a good idea.
In my development environment I have a build of Rack without optimization flags (makes debugging much easier) and a minimal set of 3rd party modules to make startup of Rack a bit faster.
In a totally different location on the hard drive I have the official released version of Rack installed, which loads plugins from the VCV Library in a normal way as normal user. This works quite well for me.
I do something similar, although I don’t user the debugger on rack.exe. I only use the debugger on a subset of my module that doesn’t require any rack code to run. That works ok for most of my plugin that don’t interact much with VCV. Would not work will at all, of course, for @stoermelder’s plugins, which talk to rack and rack code a bunch.
One small twist on this: the build system that VCV library uses to build your plugins is no longer the same as the local makefile you debug with. This bit me recently when four of my old modules started crashing on windows. try to shorten this story - the new build system runs on linux, and you can also run this yourself, if you are highly motivated. But it shouldn’t be necessary.
Back to what @stoermelder said - one fully downloaded “official” build with as many plugins as you want, and one local dev build. Seems to work fine for everyone.
Remember - if you really need to you can copy plugins between your VCV instances, so if you really need the production plugin in your dev environment just copy it over.