I’m having multiple issues with the SDK3.6.7 + XCode 6 on MacOS. This includes a failure with xcodebuild (after CMake) as well as multiple failures in XCode. I was able to fix the issues and get a complete build, but I wanted to make sure the steps I took are OK, as well as detail the errors/fixes for others with XCode 6.
My setup for MacOS is:
MacOS: 10.9.5
XCode: 6.2
CMake: 3.7.2
Running CMake works properly.
However, running xcodebuild fails:
/Users/willpirkle/Documents/VST367/VST3_SDK/public.sdk/source/vst/hosting/module_mac.mm:244:19: error:
static_cast from ‘CFURLRef’ (aka ‘const __CFURL *’) to 'NSURL ’ is not
allowed
auto bundleUrl = static_cast<NSURL> (CFBundleCopyBundleURL (bundle));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
This causes the ALL_BUILD to fail as well as trying individual projects (again or noteexpressionsynth)
It fails due to the above code in module_mac.mm:
void getApplicationModules (Module::PathList& result)
{
auto bundle = CFBundleGetMainBundle ();
if (!bundle)
return;
auto bundleUrl = static_cast<NSURL> (CFBundleCopyBundleURL (bundle));*
I can fix this by changing the offending line of code and removing the cast:
auto bundleUrl = (CFBundleCopyBundleURL (bundle));
However, this generates a warning on code a few lines down:
auto resUrl = [bundleUrl URLByAppendingPathComponent:@“Contents”];
The warning is:
/Users/willpirkle/Documents/VST367/VST3_SDK/public.sdk/source/vst/hosting/module_mac.mm:249:17: Receiver type ‘const __CFURL *’ is not ‘id’ or interface pointer, consider casting it to ‘id’
Just want to check and make sure this is OK to do.
ALL_BUILD failure #2:
Trying ALL_BUILD again, it fails due to problems in the editorhost/Source Files/window.mm file
There are 3 failures, all the same, with the following functions:
- (NSSize)windowWillResize:(nonnull NSWindow*)sender toSize:(NSSize)frameSize
- (void)windowDidResize:(nonnull NSNotification*)notification
- (void)windowWillClose:(nonnull NSNotification*)notification
The problem is with the nonnull specifier and the Error message is “Expected a type”
This is fixed by adding this define to the top of the file:
#if !defined(clang_major) || clang_major < 7
#define nonnull
#endif
Trying ALL_BUILD again results in another error, this time in editorhost/Source Files/platform.mm
void Platform::quit ()
{
if (quitRequested)
return;
quitRequested = true;
dispatch_after (dispatch_time (DISPATCH_TIME_NOW, (int64_t) (0.1 * NSEC_PER_SEC)),
dispatch_get_main_queue (), ^{
@autoreleasepool
{
for (NSWindow window in NSApp.windows) <— ERROR HERE*
[window close];
}
application = nullptr;
[NSApp terminate:nil];
});
}
This is fixed by using (older) Objective C nomenclature:
for (NSWindow* window in [NSApp windows] )
[window close];
So, with the above modifications, I can get the vstsdk project to compile in XCode 6. If these modifications are going to cause issues, please let me know. Otherwise, I hope this helps others with XCode 6.
One thing to note: the Products in XCode are all in red font, as if they are not available. However, they are found in the …/VST3_SDK/build/VST3/Debug and …/VST3_SDK/build/bin/Debug folders (or Release, if compiling for that).
– Will