在没有 Xcode 的 Mac OS X 上构建 VST 插件

Posted

技术标签:

【中文标题】在没有 Xcode 的 Mac OS X 上构建 VST 插件【英文标题】:Building a VST plugin on Mac OS X without Xcode 【发布时间】:2008-11-11 18:38:00 【问题描述】:

如何在不使用 Xcode 的情况下在 Mac 上构建 VST 插件? (我正在使用 Code::Blocks)。

【问题讨论】:

【参考方案1】:

如果你真的坚持要绕过 Xcode,你应该继续使用'make',这可能会被证明与尝试使用 Code::Blocks 一样痛苦。虽然 Xcode 一开始可能会觉得很奇怪,但喝了 kool-aid 并处理它确实会为您省去很多麻烦,特别是如果您打算开发商业 VST 插件。例如,如果您不喜欢它的编辑器,那么您可以轻松地将其替换为您选择的另一个。但作为 Mac VST 开发者,Xcode 最大的优势确实在于它擅长处理“以 mac 为中心”的东西;即,构建适当的包、通用二进制文件、资源编辑、链接到系统框架等。此外,您将在那里找到的所有文档(以及其他在线 VST 开发社区,如 KVR)都是 Xcode 用户。

无论如何,如果您选择不听我的建议,应该仍然可以按照老式的方式进行操作。 :)

原则上,VST 基本上只是一个动态库包,因此无论您使用哪种 IDE,您只需要确保它已正确打包并包含适当的资源,否则主机不会能够加载它。如果您不确切知道其中包括什么,只需在其他一些 VST 中四处寻找,看看它们在捆绑包中都有什么。要进行构建,您需要编译源代码和 VST SDK,并将以下框架链接到它:

应用服务 碳 QuickTime 系统

...您可能还需要其他一些,这取决于您最终使用的是 Carbon 的哪些部分。您还应该构建为 UB,否则您最终会激怒许多仍在使用 G4/5 的制作人。然后,您需要创建一个 PkgInfo 文件,该文件将进入捆绑包的资源目录,其中必须包含以下文本:“BNDL????” (当然没有引号)。您还必须为您的插件创建一个标准的 Info.plist 文件,该文件会将系统指向加载的实际可执行文件名的名称以及在 Finder 中显示的一些其他信息。同样,如果您不知道那里需要什么,请从正在运行的 VST 中借一份副本并进行编辑以品尝。

【讨论】:

我不同意。有了使用 Makefile 的能力,当您的 IDE 出现问题(由于更新 Xcode、升级 MacOS 或移植到 Windows 或 Linux)或当您需要添加一个特殊的优化,链接一个不寻常的库,或者通过持续集成自动化构建系统。通过正确使用 Makefile 获得的知识,包括理解编译器命令的能力,更容易在论坛和 *** 上传播,而不仅仅是说“我不知道,我的 IDE 为我做的”。【参考方案2】:

当我发现VSTGL's 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) 

【讨论】:

以上是关于在没有 Xcode 的 Mac OS X 上构建 VST 插件的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X 服务器 Xcode 机器人问题

在 Mac OS X 中没有 XCode 项目的 qmake QT 4.6 应用程序?

XCode:iPhone 目标依赖于 Mac OS X 目标

如何调试旧版Mac OS X的应用程序?

Xcode 无法添加 Mac OS X 服务器

如何在 Mac OS X 10.8 / Xcode 4.4 上使用/安装 gcc