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

C++ 在没有Xcode的Mac OS X上构建VST插件,c++,vst,C++,Vst,如何在不使用Xcode的情况下在Mac上构建VST插件?(我使用的是Code::Blocks)。如果你真的坚持要绕过Xcode,你应该直接使用“make”,这可能会和尝试使用Code::Blocks一样痛苦。虽然Xcode一开始可能会觉得很奇怪,但喝下kool-aid并处理它确实会让你省去很多麻烦,特别是如果你计划开发商业VST插件的话。例如,如果您不喜欢它的编辑器,那么您可以轻松地用您选择的另一个编辑器替换它。但作为MacVST的开发者,Xcode最大的优势在于它擅长处理“以Mac为中心”的东

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

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

不管怎样,如果你选择不听从我的建议,你仍然可以用老式的方式来做

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

  • 应用服务
  • 碳素
  • 快速时间
  • 系统

…而且你可能还需要一些其他的,这取决于你最终使用的碳成分。你也应该建立一个UB,否则你最终会激怒很多仍然使用G4/5的制作人。然后,您需要创建一个PkgInfo文件,该文件将进入bundle的资源目录,其中必须包含文本:“BNDL???”(当然没有引号)。您还必须为您的插件创建一个标准Info.plist文件,该文件将系统指向加载的实际可执行文件名的名称以及查找器中显示的一些其他信息。同样,如果您不知道需要什么,请从一个正在工作的VST中借用一份副本,然后进行编辑以体验。

我今晚这样做是因为我发现Xcode项目太旧了,以至于Xcode 4.1甚至不愿意提供升级。只是说“太老了”,然后在面包篮里打了我一拳

我把一个简单的Makefile放在一起,我只是添加了“缺少的”部分,因为很明显我需要它们

请注意,VSTGL附带了一个ppc编译的VST,我刚刚用新编译的包替换了它,这里有Foo.app/Contents/[Resources | Info.plist | etc]的布局,这个makefile没有解决这个问题,它只是将它编译成一个有效的VST包

我的另一个问题是,在测试这个时,我使用的是Ableton Live,我没有意识到它是32位的(甚至在Lion上),这就是为什么我省略了“-arch x86_64”,但如果你有一个64位主机,它应该可以工作吗

而且,看起来即使在VST3.0SDK中,他们仍然在使用纯碳,没有可可粉。(我想我并不是这么想的,但再说一次,有了狮子,你会得到很多不受欢迎的东西

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) 

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