在Mac OS X上构建VST插件而无需使用Xcode

4

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

2个回答

2
如果你真的坚持不用Xcode,那么你应该直接使用“make”,这可能会像尝试使用Code::Blocks一样麻烦。虽然Xcode一开始可能会感觉奇怪,但如果你计划开发商业VST插件,选择使用它将真正为你省去很多麻烦。例如,如果你不喜欢它的编辑器,那么你可以轻松地用自己选择的另一个替换它。但作为一名Mac VST开发者,Xcode最大的优势在于它擅长处理“Mac中心”的事情,即构建适当的bundle、通用二进制文件、资源编辑、链接系统框架等。此外,你会发现所有的文档(以及其他在线VST开发社区,如KVR)都是Xcode用户。
无论如何,如果你选择不听从我的建议,仍然有可能按照老式的方式进行。原则上,VST基本上只是一个动态库bundle,因此无论你使用哪个IDE,你只需要确保它被正确打包并包含适当的资源,否则主机无法加载它。如果你不知道具体包括什么,请在其他VST中查看它们的bundle内部。要构建,你需要编译源代码和VST SDK,并将以下框架链接到它上面:
- ApplicationService - Carbon - QuickTime - System
...并且你可能需要其他一些框架,具体取决于你最终使用Carbon的哪些部分。你还应该以UB(通用二进制文件)的形式构建,否则你会真正激怒很多仍在使用G4 / 5的生产者。然后,你需要创建一个PkgInfo文件,它将进入bundle的资源目录中,其中必须包含文本:“BNDL????”(当然不带引号)。你还必须为你的插件创建一个标准的Info.plist文件,它将指向实际可执行文件的名称,该文件将被加载,并显示在Finder中的其他信息。同样,如果你不知道需要什么,请从工作的VST中借用一份并进行编辑。

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

2
今晚我发现VSTGL的Xcode项目太老了,以至于Xcode 4.1甚至不会提供升级选项。只是说“太旧了”,然后让我感到沮丧。
我编写了一个简单的Makefile,并在需要时添加了“缺失”的部分。
请注意,VSTGL附带了一个ppc编译的VST文件,我只是用新编译的bundle替换了它。这个Makefile没有涉及Foo.app/Contents/[Resources|Info.plist|etc]的布局,它只是将其编译成有效的VST bundle。
还有一个问题是,在测试时我使用的是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) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接