the Keil uVision eval someody recommended... is, last version I know et least, crippled, it let's you program only so much KB of flash.
And IMHO, if they'd had software in stoneage, Keil would be from that time.
While it does let you look at everything you'd want to look at in an embedded situation, the feel when using the "IDE" is like with Borland C++ 2.1 from 1992 or so. Forget about decades of development of features to boost productivity (and if it's only a logical menu structure - or project file vs. settings file structure, hah).
It would be the last thing on earth I'd personally use. Especially if you then consider the price of the non-crippled version.
Also, last versions I knew did not support anything but Keil's special horrendously overpriced debuggers... forget ST-Link then.
For very small projects I currently use CooCox CoIDE, a very cut-down eclipse-based platform. All clutter removed, so in case you instinctively hide under a stone when you hear "eclipse", have no fear!
CoIDE has no C++ support.
For the supported cortex processors, it's pretty hassle-free, to get some small projekt up & running.
The versions after 1.3, though,. give me problems debugging my F100 with an st-link, but 1.3 does not yet support the M4. SO I can't say much, since I haven't looked into that.
For bigger projects, where I use C++, I use the non-commercial version of Rowley Crossworks, around 150 bucks.
It has it's quirks, but mostly works and even I got support in the forums by Rowley employes upon problems, although the non-comm license states "no support", IIRC.
It is lightyears closer to "just works" than any of the 100.0% open source toolchains I've tried so far (still have nightmares from debugger setup...)
But the editor sucks big hairy ones, so I use MS visual C++ express for editing, and Crossworks for compiling & debugging. (note that MSVC does not cupport C99, if that matters)
Rowley provide their own RTOS with that IDE, and own libraries for the cortex MCUs, I don't use either to not make my software dependent on such product.
But one thing I might use is their library to have printf send text through the SWD HW debugger, i.e. no extra UART needed to have debug text output.
Btw: Crossworks runs on Linux and Mac OS, besides windows.