Symbolic links in Mac build folders?

I’m curious as to why building a Mac VST, VST3, AAX or AU places a symbolic link to the resulting binary in the build/Debug & Release folders?

I see in the Xcode Debug & Release settings places to set the output binary location (~/Library/Audio/Plug-Ins/…), which makes sense, but why do these symbolic links get generated? And where? I don’t see a Copy Phase in the Build Phases. Is there a way to stop this?

The main reason I ask, besides it seeming unnecessary, I have my development folders in a Dropbox, which is crazy useful for so many reasons, but Dropbox doesn’t like symbolic links that lead out of the Dropbox.

They get generated due to the following Xcode settings: INSTALL_PATH, DEPLOYMENT_LOCATION and DSTROOT.

That’s the point of using these Xcode settings. Xcode is building the binary in place in the final location, it is not copying/moving it afterwards. Without these settings the binary ends-up inside the build/ folder, so Xcode creates symlinks from the build/ folder to the actual location for consistency.

Oh, I see. It’s an Xcode thing and not as I expected, a Projucer thing. Thanks for clearing that up.

Now, I’ll have to figure out a way for it to not create the symbolic link. In the mean time, I’ve added something like this to the Xcode Post-build settings in Projucer:

rm -f build/Debug/MyPlugin.aaxplugin
rm -f build/Debug/MyPlugin.component
rm -f build/Debug/MyPlugin.vst
rm -f build/Debug/MyPlugin.vst3
rm -f build/Release/MyPlugin.aaxplugin
rm -f build/Release/MyPlugin.component
rm -f build/Release/MyPlugin.vst
rm -f build/Release/MyPlugin.vst3

Thanks.

Well… Projucer is the one adding these settings to the generated Xcode project, see https://github.com/WeAreROLI/JUCE/blob/master/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h#L1051-L1065.

Using the Custom Xcode Flags field in Projucer (which overrides the existing Xcode settings), you should be able to control the behavior to what you really want. However, I don’t have a Mac to test this now, so I can’t try it out myself.