Contents |
SConstruct file:
vstEnvironment = Environment(CPPPATH = [
'public.sdk/source/midi/',
'public.sdk/source/common/',
'pluginterfaces/'
],
)
vstLib = vstEnvironment.StaticLibrary('vst', [
'./pluginterfaces/base/funknown.cpp',
'./public.sdk/source/common/linkedlist.cpp',
'./public.sdk/source/common/pluginfactory.cpp',
#'./public.sdk/source/common/pluginview.cpp',
'./public.sdk/source/common/plugparams.cpp',
'./public.sdk/source/common/plugxmlgui.cpp',
#'./public.sdk/source/common/plugguieditor.cpp',
#'./public.sdk/source/main/dllmain.cpp',
'./public.sdk/source/main/macmain.cpp',
'./public.sdk/source/midi/eventqueue.cpp',
'./public.sdk/source/midi/midieffect.cpp'
])
vstPlugin = vstEnvironment.SharedLibrary('midiecho', [
'public.sdk/samples/midi/midiecho/source/midiecho.cpp',
'public.sdk/samples/midi/midiecho/source/midiechoentry.cpp'
],
CCFLAGS = '-include public.sdk/samples/midi/midiecho/mac/prefixmacho.h',
LIBPATH = '.',
LIBS = 'vst',
LINKFLAGS = '-framework carbon -framework coreservices'
)
I don't use Visual Studio, and I also don't use Dev-C++ (even though it is very nice and open source). This HOWTO is based on the simplest possible setup: MSYS / MinGW. It assumes VST SDK version 2.4, but should be easily changed for other versions.
|- PLUGINNAME/
`- vstsdk2.4/
|- artwork
|- etc.
LIBRARY PLUGINNAME DESCRIPTION 'my first VST plugin' EXPORTS main=VSTPluginMain
# change this to the location of your unpacked VST SDK:
VSTSDKDIR = ../vstsdk2.4
CPP = g++.exe
OBJ = PLUGINNAME.o $(VSTSDKDIR)/public.sdk/source/vst2.x/vstplugmain.o $(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffect.o $(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffectx.o
LIBS = -L. --add-stdcall-alias -lole32 -lkernel32 -lgdi32 -luuid -luser32 -mwindows --no-export-all-symbols --def PLUGINNAME.def
CXXINCS = -I"$(VSTSDKDIR)/pluginterfaces/vst2.x" -I"$(VSTSDKDIR)/public.sdk/source/vst2.x" -I"$(VSTSDKDIR)" -I"$(VSTSDKDIR)/vstgui.sf/vstgui" -I.
BIN = PLUGINNAME.dll
CXXFLAGS = $(CXXINCS) -DBUILDING_DLL=1 -mwindows -O3
RM = rm -f
.PHONY: all clean
all: PLUGINNAME.dll
clean:
${RM} $(OBJ) $(BIN)
DLLWRAP = dllwrap.exe
DEFFILE = libPLUGINNAME.def
STATICLIB = libPLUGINNAME.a
$(BIN): $(OBJ)
$(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(OBJ) $(LIBS) -o $(BIN)
PLUGINNAME.o: PLUGINNAME.cpp
$(CPP) -c PLUGINNAME.cpp -o PLUGINNAME.o $(CXXFLAGS)
$(VSTSDKDIR)/public.sdk/source/vst2.x/vstplugmain.o: $(VSTSDKDIR)/public.sdk/source/vst2.x/vstplugmain.cpp
$(CPP) -c $(VSTSDKDIR)/public.sdk/source/vst2.x/vstplugmain.cpp -o $(VSTSDKDIR)/public.sdk/source/vst2.x/vstplugmain.o $(CXXFLAGS)
$(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffect.o: $(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffect.cpp
$(CPP) -c $(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffect.cpp -o $(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffect.o $(CXXFLAGS)
$(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffectx.o: $(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffectx.cpp
$(CPP) -c $(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffectx.cpp -o $(VSTSDKDIR)/public.sdk/source/vst2.x/audioeffectx.o $(CXXFLAGS)
These are all free VST instruments and effects that no self-respecting laptop git should do without: