CLion – Brand New IDE for C and C++ Developers
blog.jetbrains.com
blog.jetbrains.com
I already managed to make my project work on both MSVC 2012 and Xcode5. All I have to do is to commit code, add source files I would have added in the other project, and I'm good to do.
It's pretty smooth except from weird stdafx differences, and the fact MSVC2012 doesn't support variadic templates yet.
I'm really wondering if I would really be able benefit from clion. I mean obviously I would have to recompile SFML as SFML does not provide binaries for clion ? That's a first problem I guess.
I also remember giving up on compiling Ogre3D on xcode, there were many dependencies, versions of the engine (repo or stable), it was very annoying and I'm not into tweaking Cmake.txt files. I guess jetbrains would not solve this.
I have not given a try to this IDE, but I'm skeptic. C++ is designed as a cross platform languages, but the fact build systems differ is a huge pain, and an IDE won't solve this unless library maintainer provide solid cmake scripts.
Anyone with cmake (and know how to use it) can build your source.
Haven't messed with it much so I don't know yet what ways it DOES lock you in. There's probably something.. (other than needing to use cmake)
edit: By all that I mean, you can use the versions of SFML compiled for whatever compiler you plan to use it with.
If I have to build SFML from source because SFML doesn't provide binaries for clion, and if it's a pain in the ass because it doesn't work out of the box, it's not a lock in, but it makes thing harder for clion.
I just hate to deal with library cross-platform gimmicks, not to mention CMake scripts. I want to write code, not learn some build scripting language that is just some hack and might go extinct some day.
> Anyone with cmake (and know how to use it) can build your source.
Usually I can give a project file, eventually I even give a zip with the library binaries, and it's fine. Once you use a binary library the heavy lifting is done.
What I'm worried about is that having a cross-platform IDE doesn't nullify the binary incompatibility between binaries.
I guess clion might be useful for very large C++ application projects who want to work in cross-platorm, but not libraries. Games are usually not very large applications, they just use some inputs and opengl.
That does not make sense. You don't need binaries for CLion. If anything, you need binaries for GCC or Clang (the compiler - not the editor/IDE).
In case of a C library, the library binaries build with any compiler will work with any other compiler in your C/C++ project.
In case of a C++ library, you might need to have the library binaries build with the same compiler. So, as CLion uses GCC, you need library binaries which were also build with GCC. You can build the library with whatever build system you like (Xcode, CMake, by hand, automake, ...) as long as you use GCC.
In any case, it does not matter what editor/IDE (Vim, Xcode, CLion) and what build system (Xcode, CMake, ...) you use, it only matters, what compiler (GCC, Clang) you use.
so if I use clion on mac, do I give it frameworks or .dylib ?
I very much hope this is the future and the tooling around CMake is improved too. In my perfect world, this would include dependency management - even if that just meant a reference to versioned sources that you could easily include in a project file and the tooling was responsible for pulling them down and building them.
Running on Ubuntu 12.04 LTS with this JVM:
$ java -version
java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1~0.12.04.2)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)http://i.imgur.com/tpsl4BH.png
Java on left vs terminal and native editor.
...Why? Just interface with the existing build system. Most have very clear semantics, and it's not clear anything is gained from prioritizing one over the other. All the ide needs to worry about is generally syntax highlighting, targets, flags (e.g. to enable debugging), and the STANDARDIZED error reporting.
Also, gyp, ninja.... so many build systems. CMake only has a fraction of the market, and not even an impressive one.
https://news.ycombinator.com/item?id=8283992
HN search function for keyword "clion":
I wish it were an IntelliJ plugin instead, or at least would give IntelliJ the ability to syntax-highlight C++. IntelliJ can syntax-highlight a gazillian exotic languages, but not C/C++... Having two separate programs is annoying if you have projects with many different programming languages.
Similarly, AppCode is not available as a plugin.
Of course the solution, perhaps, would be to use a clang-based tool to provide syntax highlighting rules. I would hope JetBrains does something like this and contributes back to the clang project so everyone else can benefit from the bugfixes and new features they require to get their product to a good place.
I hope they settle on Clang/LLVM for the main tool chain and include a complete version of Clang for Windows (when the Clang standard library is done).
My one issue with these essentially single-purpose IDEs is that they are intentionally crippled for other languages. I find it very annoying, for example, that I have to edit Vagrantfiles as plain text because shipping Ruby support in another IDE product is verboten. In contrast, I can fire up SublimeText and have support for every language in existence, including config syntaxes and scripts.
Their products are typically very good though, other than that. I've grown completely dependent on PyCharm.
It's at least an order of magnitude easier to support viewing, editing, syntax highlighting, and textual search across arbitrarily many languages, which is why there are many tools that support that feature set, including almost all major code editors.
I don't know how JetBrains architects their IDEs, but I suspect they have some in-memory database that populated with indexed project metadata. To add multiple metadata indices (for different languages) with cross indexing between them would be an entirely different data model. Again, it would be much more work to develop, test, and maintain.
If so and the word is positive, is there any indication of the kind of delay we might expect. I already pay for IDEA and love it, much as I want what CLion offers, I couldn't personally justify another paid license on top (with the increased load in yearly renewals that implies).
[1] "We will support other project models in future. Priority depends on the votes in tracker: http://youtrack.jetbrains.com/issue/CPP-274 "