It's official, I hate the Arduino IDE. There's just so much wrong with it that I hardly know where to begin...
First and foremost: the build pipeline. Who came up with this anyway? I know Arduino is aimed at beginners, but that's no excuse to make a mess of things. What happens when you hit the 'Verify' button (compile) is the following:
If you're like me and like to have your source tree reflect the namespaces you use then you're out of luck. I for one like to have to use #include <rc ppmout.h=""> for my rc::PPMOut class, but that's not going to work for multiple reasons.
First of all, using that include won't tell the pipeline you're using the rc library, it doesn't look beyond the library's root folder for files, so the library won't be added to the include path and you'll be presented with a nice compiler error. This can be fixed by including a file that is placed in the root of the library folder, like rc.h. So you'll have to add another (useless) include to your source, yuck.
Now you've solved the include problem and fixed the compiler error, but get linker errors for unresolved references! Great, the pipeline doesn't see the CPP file unless it's in the root of the library, so it doesn't compile it.</rc>
And finally, none of this is configurable in any way through the IDE, can't set compiler flags, change warning levels, optimization levels or anything. A lot of these frustrations wouldn't exist if there was some form of project file with compiler settings, include paths, etc. None of it would have to be very complicated.
And don't get me started on the actual editing of code using the Arduino IDE, I've selected the "use external editor" option a long time ago; a few minutes after installing the IDE to be precise.
So, next challenge: rigging up a build pipeline in visual studio...