I'm currently working on automating as many build processes as possible. I then stumbled upon some questions that I want to ask.
I have my plugins' sources located at a network shared folder to be accessible via SMB to a MacOS VM. However, that leads to symlink issues, so I have to modify the build output path in the buildconfig to be local. That's okay, but is there any information avialable to avoid that? I'd like to keep everything inside this shared folder.
Compatibility: How do you maintain a single codebase when keeping your plugins up-to-date (e.g. R16-R20 Win/Mac). I was thinking about using macros, but that probably leads to clutter and more complexity that I want to avoid. Another approach is simply to rewrite functions in question, but that creates a lot of "overhead" due to rather duplicate code. The last thing that comes into my mind is to use some sort of wrapper and use simple macro switches. Are there any best practices available?
Automating: I've currently setup a MacOS VM that contains Cinema 4D installations to be able to compile my plugins. So I have to run XCode to compile my plugin for Mac. I'd like to automate this process of course. I was thinking about having some sort of daemon process that watches specific folders and automatically fires up xcodebuild and starts building if the content changed. How do you guys handle this?
I'm afraid the SDK Team will not be contributing much here. MAXON uses a custom made build tool chain, involving the project tool, to serve our internal needs as good as possible. Unfortunately this is nothing that could be easily replicated outside. Also MAXON's needs are quite a bit different to your needs as a plugin developer.
But with this said I'd like to ask everybody in our community to contribute to these questions. I could imagine many of you run into (and maybe have already solved) similar issues. We'd certainly like to hear about your environments and how you cope with above described issues. And we'd like to learn from this, in order to maybe post some useful ideas to our developers.
no worries, this question was not exclusively targeted at Maxon, the opposite is the case. I was hoping for some information by other users here, like @kbar or even @m_adam (back in the days Maxime was not associated with Maxon. ;))
Meanwhile, I'm going to build a toolchain and see what works for me. I'll report back here if I have something to show. That may help someone else.