I heartily recommend PlatformIO. It makes hardware programming much, much easier by handling dependencies, compilation, etc.
The more ambitious the framework, the more you have to wade through to figure out what it's actually doing when something breaks...I'd much rather have to deal with some cross-compilation headaches and dependencies than to be at a dead end when the 'black magic' stops working.
And yes, it handles compilation/flashing/etc automatically.