Update 29.09.2014: As pointed out by Anastasia Kazakova in the comments, CLion’s EAP has received an update which added native support for MinGW-w64!
In the past few days, I’ve seen CLion mentioned on multiple locations including the SFML forum. CLion is a new IDE developed by JetBrains for CMake based projects, it supports multiple languages and can be further extended with plugins. Some might recognize the interface since it’s very similar to JetBrains’ popular Java editor IntelliJ IDEA.
Personally I haven’t really looked at the IDE in-depth, since JetBrains is the creator of the allegedly awesome ReSharper tool for Visual Studio – which I’ve never used – the IDE itself should provide some pretty decent refactoring capabilities. Last I checked out Qt Creator, I was a bit disappointed at the sluggish CMake integration; this at least seems to work a lot better with CLion. However maybe Qt Creator upped their game since then as well.
This post however shouldn’t really be about introducing/promoting CLion and maybe some or many of you who somehow find this post already know what CLion is, instead this should actually be a short tutorial on how to use a compiler of the MinGW-w64 family with CLion.
For whatever reasons the developers at CLion apparently didn’t get the memo, that the original MinGW has been relatively abandoned and most of the user base has moved on to the MinGW-w64 project, which originally was created to develop a 64-bit compiler, but now supports both architectures. As such CLion currently only officially supports the vanilla MinGW. As a MinGW user for many years, the fact that CLion only wanted to recognize the original MinGW as compiler seemed rather odd, since the differences in using either a MinGW or a MinGW-w64 version nearly doesn’t exist. When I ran ProcMon and tracked what in the filesystem CLion accessed, I noticed that it checks for the existence of include/_mingw.h. By providing such a file in your MinGW-w64 directory structure you can trick the compiler into accepting it as MinGW compiler.
Here are the few steps to make it work:
- Get your MinGW-w64 compiler installed somewhere.
- Create a file with the path [MinGW-w64 dir]/include/_mingw.h and the content shown below.
- Point CLion to your [MinGW-w64 dir] and watch how CLion recognizes your MinGW setup.
#ifndef __MINGW_H #define __MINGW_H #define __MINGW32_VERSION 3.20 #define __MINGW32_MAJOR_VERSION 3 #define __MINGW32_MINOR_VERSION 20 #define __MINGW32_PATCHLEVEL 0 #endif /* __MINGW_H */
Disclaimer: CLion is still in an Early Access Program and may change any day. This trick worked for me, but there’s still a chance that it might not work for you.
To end this write up, here’s the introduction video from JetBrains on CLion – it was posted on their blog.
5 thoughts on “How To Use MinGW-w64 With CLion”
Nice work! I knew about Russinovich’s awesome tool suite from back in the day, but haven’t used it much of late. I’ll test out your approach a bit later when I’m bounced into a Windows box.
I’ve recently tested CLion out a little bit under Linux using GCC and Clang and it seems to work OK at this point. Really I’m only investigating it for it’s C++ refactoring capabilities. C++ refactoring is notoriously difficult to pull off correctly–even Jetbrains abandoned their previous C++ ‘Refactor!’ tool a few years ago (of which I had a license and was disappointed over).
I basically only use Windows these days for gaming, but recently I needed to do some project work there. I do like STLs work so I’m playing around with his MinGW-w64 package a little (http://nuwen.net/mingw.html). Now that you’ve sleuthed CLion’s little issue out using Procmon and have created this clever little header trick I’ll probably take a look at it on Windows–again only for the refactoring capabilities. This is still an area Visual Studio is sadly lacking in for C++, though it’s a complete no-brainer imho otherwise for development if you’re on the Windows platform.
Thank you! Glad to hear that this trick might help you further. :)
Yes, STL does great work and his nuwen version is quite alright, even if it has its own quirks here and there. I’m primarily using the MinGW Builds (http://mingw-w64.sourceforge.net/download.php#mingw-builds), since there are always uptodate, come with different “versions” and are now even officially part of the personal build of the MinGW-w64 project.
Thanks for that!
New EAP build of CLion now supports MinGW-W64 out-of-the-box: http://blog.jetbrains.com/clion/2014/09/new-clion-eap-build-import-project-from-the-existing-sources-toolchain-updates-and-more/
Thanks for the information, appreciate it! :)