如何在不使用 Xcode 的情况下在 Mac 上构建 VST 插件?(我正在使用 Code::Blocks)。
2 回答
如果你真的坚持要绕过 Xcode,你应该继续使用'make',这可能会被证明与尝试使用 Code::Blocks 一样痛苦。虽然 Xcode 一开始可能会觉得很奇怪,但喝了 kool-aid 并处理它确实会为您省去很多麻烦,特别是如果您打算开发商业 VST 插件。例如,如果您不喜欢它的编辑器,那么您可以轻松地将其替换为您选择的另一个。但作为 Mac VST 开发者,Xcode 最大的优势确实在于它擅长处理“以 mac 为中心”的东西;即,构建适当的包、通用二进制文件、资源编辑、链接到系统框架等。此外,您将在那里找到的所有文档(以及其他在线 VST 开发社区,如 KVR)都是 Xcode 用户。
无论如何,如果您选择不听我的建议,应该仍然可以按照老式的方式进行操作。:)
原则上,VST 基本上只是一个动态库包,所以不管你使用的是什么 IDE,你只需要确保它被正确打包并包含适当的资源,否则主机将无法加载它。如果您不确切知道其中包括什么,只需在其他一些 VST 中四处寻找,看看它们在捆绑包中都有什么。要进行构建,您需要编译源代码和 VST SDK,并将以下框架链接到它:
- 应用服务
- 碳
- 快速时间
- 系统
...而且您可能还需要其他一些,这取决于您最终使用的是 Carbon 的哪些部分。您还应该构建为 UB,否则您最终会激怒许多仍在使用 G4/5 的制作人。然后,您需要创建一个 PkgInfo 文件,该文件将进入捆绑包的资源目录,其中必须包含以下文本:“BNDL????” (当然没有引号)。您还必须为您的插件创建一个标准的 Info.plist 文件,该文件会将系统指向加载的实际可执行文件名的名称以及在 Finder 中显示的一些其他信息。同样,如果您不知道那里需要什么,请从正在运行的 VST 中借一份副本并进行编辑以品尝。
当我发现VSTGL 的Xcode 项目太旧以至于 Xcode 4.1 甚至不会提供升级它时,我今晚这样做了。只是说“太老了”,然后在面包篮里打了我一拳。
我整理了一个简单的 Makefile,我只是在其中添加了“缺失”的部分,因为很明显我需要它们。
请注意,VSTGL 带有一个 ppc 编译的 VST,我刚刚用我新编译的包替换了它,这个 makefile 没有解决 Foo.app/Contents/[Resources|Info.plist|etc] 的布局,它只是编译它到一个有效的 VST 包中。
对我来说另一个问题是,在测试时我使用的是 Ableton Live,但我没有意识到它是 32 位的(即使在 Lion 上也是如此),这就是我省略“-arch x86_64”的原因,但如果你有一个 64 位主机,它应该工作?
此外,看起来即使在 VST 3.0 SDK 中,他们仍在使用直接的 Carbon,看不到 Cocoa。(我猜并不是说我会那么倾向于,但是再一次,使用 Lion,您会得到很多已弃用的东西。
INCLUDES = \
-IVSTGL \
-I../vstsdk2.4/ \
-I../vstsdk2.4/public.sdk/source/vst2.x/
LIBS = \
-framework OpenGL \
-framework GLUT \
-framework AGL \
-framework Carbon \
-framework CoreServices
SOURCES = \
VstPlugin.cpp \
ExampleEditor.cpp \
VSTGL/VSTGLEditor.cpp \
VSTGL/VSTGLTimer.cpp \
../vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp \
../vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp \
../vstsdk2.4/public.sdk/source/vst2.x/vstplugmain.cpp
all:
g++ -arch i386 $(INCLUDES) -bundle -o VSTGL.vst/Contents/MacOS/VSTGL $(SOURCES)