I haven’t been playing with the 2.00 code before now, so this may be an old issue for some folks. But it feels like a serious potential problem and I’d like to bring it up.
I’ve been building plugins using Pace iLok security with Juce 1.53. I can’t reveal much detail because I’m under NDA, but it boils down to the fact that I have to add a Pace-specific annotation to files that are part of the build. On top of that, there are a number of rules that must be added to the project files–additional tools and scripts to be run during various build-phases. There’s no possible way that Introjucer can be cognizant of that, and no reason it should. While there’s some value in running Introjucer at the creation of a project, it’s a one-shot deal. After security measures are added to the build (and this could apply to all sorts of other tools, too) a later run of Introjucer will blow all that away.
With Juce 1.53, it turned out not to be too hard to manage this. I made a simple little wrapper file that simply defined symbols I needed (like JUCE_USE_CDREADER) and then included juce_amalgamated.cpp. My necessary Pace annotation came just before the inclusion of juce_amalgamated.cpp. Because the amalgamated file was a single giant blob of code, the annotation was good for everything inside. I tried making a similar file for 2.0 which included the files like juce_audio_basics.mm and so on, with my annotation in front of each. Turns out that those new juce files don’t want to be included by a single file and will hit an error condition if you try. Looks like I’m going to have to write a couple of dozen special little amalgamators added individually to the build. Any future runs of the Introjucer will have to spit data out to a harmless area that I’ll have to copy out of.
I’m aware that there are likely only a handful of Juce users who use Pace. But I’m sure that quite a few do have special-purpose scripts and build phases in their projects and will find Introjucer of little value after using it that first time. That seems a shame since there’s much that’s attractive about the tool. It would be nice to have way way for it to meet you halfway, spitting out a set of little include files that could simply be dragged into an existing project.