CLion 1.1 roadmap & ACCU 2015

Anastasia Kazakova

Hi everyone,

Last week’s CLion 1.0 release brought lots of excitement, along with a shower of comments and suggestions. After celebrating this milestone, we processed all of your feedback to lay out a plan of moving forward to make CLion a better C/C++ IDE.

Summer is a good time to take a deep breath, sit back and polish all the smart features we introduced in v1.0. We plan to release CLion 1.1 by the end of summer, focusing on these areas:

  • Code style changes will cover formatter fixes and various bundled coding styles schemes. This is the perfect time to share your favorite one(s). Post them in the comments below!
  • Debugger improvements will include LLDB integration.
  • Continuing to work on CMake support, we will finish most cases for completion and navigation in CMake files. We’ll also going to fix slightly unexpected behavior where header files aren’t listed in CMakeLists.txt and not included into the project.
  • Autoimport will evolve to hopefully become your indispensable assistant.
  • Last but not least, we’ll continue testing CLion on huge projects to fix freezes and improve the performance.

CLion 1.1 will also include lots of bug-fixing. Your votes for issues in our tracker can help set the right priorities.

Things can change but we’ll try to follow this plan.

We know you are waiting for integration with other build systems, Google Test and more additional tools. They will definitely come to CLion, though not in v1.1. We do appreciate your patience. Stay tuned and follow our updates!

ACCU 2015

In case you’ll be in Bristol this week, don’t miss the fantastic ACCU 2015 conference. Do stop by our booth or simply catch someone from the team in the venue to chat, share ideas, ask for demos, and learn a trick or two from our CLion and ReSharper C++ team members. See you there!

Develop with pleasure!
The CLion Team

Comments below can no longer be edited.

83 Responses to CLion 1.1 roadmap & ACCU 2015

  1. Apurva Mehta says:

    April 20, 2015

    I think for C++, having great automatic support for the Google C++ style guide would be pretty useful, since it is becoming quite popular.

    • Anastasia Kazakova says:

      April 20, 2015

      Current default code style in CLion is following these Google guidelines.

  2. Javier says:

    April 20, 2015

    Favorite Code Style: Google C++ Style Guide

    • Anastasia Kazakova says:

      April 20, 2015

      Current default code style in CLion is following these Google guidelines.

      • Javier says:

        April 20, 2015

        I think is partial the following of Google C++ Style Guide, e.g.:
        To indent, CLion use 4 spaces, instead of 2 spaces as is defined here.

        It would be nice a full support of Google C++ Style Guide. Maybe not as CLion default, but defined a suggested scheme in CLion Code Style.

        • Anastasia Kazakova says:

          April 20, 2015

          Yes, this is exactly what we are planning to achieve.

  3. Tengiz Sharafiev says:

    April 21, 2015

    How about this one http://www.barrgroup.com/Coding-Standard ? It’s standard for embedded C development.

    • Anastasia Kazakova says:

      April 21, 2015

      We’ll have a look, thanks.

  4. Yury V. Zaytsev says:

    April 21, 2015

    Will there be point releases with batches of bugfixes that are ready for consumption in between?

    Also, regarding build system support, you might wish to consider the route that many tools have taken in the past, like clang-analyzer. The idea is to override the C/C++ compiler executables by providing smart compiler wrappers, and this way collect all the calls to the compilers, no matter which build system is actually used. After that you can use compiler dependency generation (“-M”) flags to get the information about the rest of the files, or rely on your own front-end for this kind of analysis, whichever you deem to be more appropriate.

    The benefit of this scheme is in that you’ll automagically gain baseline support for *any* build system out there, and then you’ll only need to add custom code to specifically support the most requested ones in addition to CMake.

    • Anastasia Kazakova says:

      April 21, 2015

      > Will there be point releases with batches of bugfixes that are ready for consumption in between?
      Sure, just as we usually do.

      Thanks for the suggestion. This could be a possible solution and we’ll compare it to other variants we have.

  5. Alexander Bychuk says:

    April 21, 2015

    please, add support for astyle

  6. X5 says:

    April 21, 2015

    Need a cpp plugin for Idea to use android NDK,hope it will come in the future:)

    • Anastasia Kazakova says:

      April 22, 2015

      Not sure how CLion-based plugin for IntelliJ IDEA is connected with android NDK. In the nearest CLion is not going to support Gradle and other Android-related features.

      • Kirill says:

        May 17, 2015

        CLion could possibly just-edit C\C++ sources in an android NDK project without full support (build + debug)

        We are developing an android project in the IDEA currently and it has java and C\C++ source files.

        • Anastasia Kazakova says:

          May 18, 2015

          CLion relies on a build-system, that is CMake for now and takes all the information for correct resolving out of there. So you can possibly import your sources into CMake project with CLion, tune the build system (some specific linking, include header paths, etc.) and then it will be possible.

  7. Terence Martin says:

    April 22, 2015

    The lack of 32 bit support and using regular make as a build system is a real killer, but c’est la vie. Is there any chance of adding Objective-C support (presumably taken from AppCode) to CLion? (We use gcc/clang and GNUstep to write server software at my company, stuff that was originally ported from NeXT).

    • Anastasia Kazakova says:

      April 22, 2015

      Really not sure about Objective-C. Do you use them both in one code base? AppCode is for iOS/OS X development mainly, still supports Objective-C, Swift, C and C++. While CLion is cross-platform and works with GCC and clang. And we not sure what can be a common use case to unite these two.

      • Terence Martin says:

        April 22, 2015

        Yeah our primary code base is Obj-C under Linux, using clang to compile and gnustep to provide the foundation libraries.

        I figured it would be a bit of a long shot, but I thought I’d ask anyway. We’re definitely in the minority using this combination of platform and language.

      • Semi Essessi says:

        August 26, 2015

        we have this problem. we work fully cross platform with C/C++ as code making up the bulk of projects.

        iOS and OS X necessitate a little Objective-C or Swift and Android necessitates a little Java – having one IDE for this that doesn’t suck (Eclipse is very close, but it is an utterly awful as a tool) would be a great help, even though we are likely to always use Visual Studio (die-hards refuse to move) and Xcode (Apple do their best to force it on you), having one consistent development environment is even more useful.

        AppCode doesn’t solve this problem for us, but CLion is close… maybe a better solution would be IntelliJ Ultimate, but it seems lacking in features too.

        • Anastasia Kazakova says:

          August 26, 2015

          What’s the problem with AppCode for you? C/C++ support is committed to both products, so it’s actually the same. Which build system do you use?

  8. Rapmdubdab says:

    April 23, 2015

    Please, please, add remote compiling or at least remote deployment!

    • Anastasia Kazakova says:

      April 23, 2015

      You can upvote – https://youtrack.jetbrains.com/issue/CPP-744. And we’ll consider it for later versions.

      • Trond says:

        April 23, 2015

        Does this mean that the debugger improvements mentioned for 1.1 don’t include remote GDB support?

        • Anastasia Kazakova says:

          April 24, 2015

          If there are some time left after finishing all debugger bug fixing and integrating LLDB, then we’ll have a look at this. But still a lot to do before this. So most probably it won’t include remote feature.

  9. Tomas says:

    April 23, 2015

    Firstly, I would like to thank you so much for your work and enthusiasm, the IDE is fantastic fruits of your labour!

    Please consider replacing default Google C++ Style. You should definitely use the Almman formatting^1 style so-called ANSI C++, since it contributes to better readability and maintainability.

    When achieving implementation of Almman style (and hope also other styles) you can take inspiration from source formatter called Artistic Style^2. It is very nice and useful if you will want for example create a default set of style sheets and let to users to choose their favourite.

    [1] http://en.wikipedia.org/wiki/Indent_style#Allman_style
    [2] http://astyle.sourceforge.net/astyle.html#_Quick_Start

    • Anastasia Kazakova says:

      April 23, 2015

      Thank you very much for your suggestions. We’ll have a look!

    • Michael Hofmann says:

      April 25, 2015

      I completely second that. I find the Google style very problematic in a number of aspects, including but not limited to variable/class naming, brace placement and allowed line lengths. Not to mention a few other incomprehensible things, like the no-non-const-refs rule for function arguments.
      Allman-style at least improves on the Google style w.r.t. brace placement – it’s a start.

      Luckily CLion is pretty flexible in its options, although a few important ones are missing.

      For example, it would be highly desirable (i.e. so all team members can follow our in-house style guide) to be able to decide w.r.t. function declarations/definitions whether or not to separate a) template specifiers, b) the (optional) inline keyword, c) their return type, and d) the function name/arguments by line breaks. As in:

      template // possible break (always / if too long / never)
      inline // possible break (always / if too long / never)
      LongTypeName // possible break (always / if too long / never)
      LongClassName::foo(LongTypeName a, AnotherLongTypeName b)
      {
      // …
      }

      • Anastasia Kazakova says:

        April 25, 2015

        Thank you for the comment.

        Some of the existing options look like serving your suggestions: Editor | Code Style | C/C++
        – Wrapping and Braces tab | Function parameters settings
        – Wrapping and Braces tab | Templates settings

        Any other missing settings you can add to our issue tracker as feature requests. Please, describe there the expected behaviour of the option.
        https://youtrack.jetbrains.com/issues/CPP

  10. qqiangwu says:

    April 24, 2015

    http://www.stroustrup.com/Programming/PPP-style-rev3.pdf

    This is the style recommended by Bjarne Stroustrup in his book `Programming — Principles and Practice Using C++` for new C++ programmers. Hopefully it will be supported in CLion. I’ve used it for several years.

    • Anastasia Kazakova says:

      April 24, 2015

      Thanks!

  11. Ivan says:

    April 24, 2015

    How to customize dictionary and menus to a foreign language ?
    Is there a guide ?
    Thanks

    • Anastasia Kazakova says:

      April 25, 2015

      Do you mean you’d like to localize the IDE menus? There is no such option for now.

      • Ivan says:

        April 26, 2015

        And to identify words in a foreign language as identifiers.

        • Anastasia Kazakova says:

          April 26, 2015

          What OS/platform you are on?

          • Ivan says:

            May 5, 2015

            Linux

          • Ivan says:

            May 8, 2015

            Opensuse 13.1

  12. R. K. says:

    April 25, 2015

    Plugin for IDEA please! Even if it costs additionally!

    • Anastasia Kazakova says:

      April 25, 2015

      What’s your use case for it? Simply having all in one place?

      • R. K. says:

        April 26, 2015

        Indeed. Working with project that is using multiple languages is much easier with all-in-one solution. For example python or php application backed by native extension module.

        • Anastasia Kazakova says:

          April 27, 2015

          Ok, thanks for the feedback.

      • Ivo Costa says:

        April 27, 2015

        I already paid for an Intellij Utilmate license that costs twice as much as anything else, and I continue to pay for it every year. It was the Ruby plugin that already saved me from paying an additional Rubymine license or moving back to Eclipse for that kind of work.

        I don’t limit my self to a single technology and already in the past did integrations of C libraries with Java through JNA.

        From IntelliJ Ultimate page:
        “PHP, Python and Ruby.”

        Each of these already has a dedicated IDE by Jetbrains and still got support in IntelliJ one way or another.

        Maybe I don’t have good use case (JNA is an extreme case), but still as a IntelliJ Ultimate licence holder I’d like to know why would I not have access to a C/C++ plugin

        • Anastasia Kazakova says:

          April 27, 2015

          Thank you for your comment. We do plan to integrate CLion as a plugin to IntelliJ IDEA, still we think that now we have quite a lot of tasks that have a higher priority for the team. Like language parsing fixes, performance, LLDB support and general debugging improvements, maybe Python, Makefiles or any other build system support, doxygen, etc.
          We are asking about use cases to know if there are any bilingual case except for Android (that we already know about). Just in case we are missing smth important.

          • Chris johnson says:

            May 19, 2015

            The project I work on is mostly c, Cpp, some linux kernel driver development, make, plus some python, bash scripts, gtest, gmock, golang, a REST based Web ui etc. I don’t think that is atypical of a major embedded linux development. Would love to use intellij, from my experience of it from java server, Web app.
            I think your best bet would be to add it to intellij, plus my big corporation already buys Intellij licences. Right now I can’t do much with clion, especially with the linux kernel so it’s back to visit and eclipse.

          • Chris Krycho says:

            June 30, 2015

            The Python and C/C++ development stack is extremely common in scientific computing; having a CLion-based plugin for IDEA would be extremely helpful for this. All of those combos are therefore important: CLion absolutely should support Python development, and PyCharm should be able to run the CLion plugin. This is especially important since the project files conflict with each other, making it difficult to have a CLion and IDEA or PyCharm project in the same location.

          • Edwin Cettinich says:

            October 5, 2015

            I’m looking for one IDE which can handle multiple languages, mostly C++ and Python.

            Eclipse: too bad performance.
            Visual Studio: mainly fixed on the Windows system. No chance. We also support other platforms (Desktop-Linux, Embedded Linux) and compilers.
            NetBeans: last test was years ago. There is no official and professional Python support.
            PyCharm: very good in Python (in fact the best I know). Very poor in C++ (via plugin).

            You asked for Non-Android use cases with 2 and more languages? Here are two:

            One of our projects is a program with different processes in a client-server architecture. Client processes (C++) communicate with server processes (C++, Python) and vice versa. Communication is defined in IDL. Scripts are in Shellscript when we run on Linux and in VBScript when we run on Windows. Beside that XML and Json structures and makefiles are used.

            Another project consists of programs at different stages. The Output of one stage is the input on the next stage. In each stage we have a bunch of programs. The flow through the stages and which program is activated on each stage is very dynamic. All the programs are written in C++ and Python. Shellscript and Python is the glue for all these.

            I would highly appreciate one IDE being able to support multilingual projects.
            As Chris wrote it is obviously not possible to have two editors (CLion and PyCharm/IDEA) opened at the same time on the same project files.

            I’m planning to get some licenses now, but I’m really not sure which program I should use.

            • Anastasia Kazakova says:

              October 5, 2015

              Thanks for such a detailed reply. Python plugin is planned for CLion: https://youtrack.jetbrains.com/issue/CPP-434. Unfortunately won’t come to CLion 1.2 this Fall, but we hope to get it quite soon on board.

  13. Anton says:

    April 27, 2015

    Thank you for your job, you do the best IDE in this world.

    I’d like to see Qt Coding Style:
    https://wiki.qt.io/Qt_Coding_Style
    https://wiki.qt.io/Coding_Conventions

    • Anastasia Kazakova says:

      April 27, 2015

      Thank you for the suggestion. We’ll consider it.

  14. CLion 1.0.1 Update | JetBrains CLion Blog says:

    April 28, 2015

    […] ← CLion 1.1 roadmap & ACCU 2015 […]

  15. Yury says:

    April 28, 2015

    1. I would like to ask you to think about making style identification “Keyword” more specific, because now it’s absolutely useless. Classes, class access types, data types, namespaces etc. etc., are all using same style which makes styling ugly and hardly readable.

    2. Again i would ask about nice and good Declaration info. Because now we had several not so helpful function – quick definition, quick documentation.
    Use of Definition and Declaration is obvious – it’s standard, but the quick versions are working not the best way. I described problem here https://youtrack.jetbrains.com/issue/CPP-3152#u=1429704419521

    3. Can’t get the logic of your indent styling. Are you using absolute indention parameters against the parent structure instead of using indention against the previous indention instance?

    I want a style like this:

    namespace Bar
    {
    class Foo
    {
    public:
    Foo();
    virtual ~Foo();
    };
    }
    if (isFoo)
    {
    Foo();
    }
    elseif
    {
    return 0;
    }

    But i can’t achieve it. I can’t move neither members of the class against access type without making global indention bigger(what i don’t want), neither i can’t move the content of “if” directives against the indented braces. Looks like your indention is pretty messed up.

    From what i can imagine it should contain one single parameter – Indention size. And a two lists – 1. The words and symbols that should be indented 2. Rules of exceptions what SHOULD NOT be indented – which would be the actual Settings.

    I would appreciate if you give advice how can i achieve the above mentioned style in case i haven’t understood the Indent settings right.

    Best regards,
    Yury.

    • Yury says:

      April 28, 2015

      Sorry the formatting was lost after i sent it.

      namespace Bar
      {
      ….class Foo
      ….{
      ……..public:
      …………Foo();
      …………virtual ~Foo();
      ….};
      }
      if (isFoo)
      ….{
      ……..Foo();
      ….}
      elseif
      ….{
      ……..return 0;
      ….}

      • Anton Makeev says:

        April 29, 2015

        1) Please follow https://youtrack.jetbrains.com/issue/CPP-417.
        But frankly speaking it’s not in our shot-list since we do not see the value of such highlighting (I’m not saying that there is none, though): in all our IDEs, the semantic highlighting is applied to the symbols (actual names of classes, namespaces etc), not to the keywords. But, we are open for the discussion and examples (in the issue).

        2) We are planning to support various documentation formats (like Doxygen), and your request fits nicely into it.

        3) Could you please file a bug report/request for the formatting with more examples? We discuss it there, since it’s more convenient form.

        • Yury says:

          April 29, 2015

          Not sure if i understand you correctly.

          1. There’s no semantic highlighting in CLion or did i miss something – i guess not. Semantic highlighting is in KDevelop for example(i would suggest you at least to take a look at it) – what Clion does is called Syntax highlighting which is absolutely different things. And if proper and customizable code representing is not the main goal of your IDE than i don’t understand why people should use it at all. It’s basic features that pretty much standard for 5 years. You made a new IDE in 2015 with no Semantic highlighting and telling programmers that they don’t need separate styling of language structure? That’s weird. And i’m not the only one. https://youtrack.jetbrains.com/issue/CPP-417

          2. What i’m talking about is not a documentation system like Doxygen but area in the bottom which would have info on type/declaration file/and args of the functions, classes etc etc. Now you have spawning new window for each call of Quick definition with 1\3 of needed info. I would like a constant info without any spawning windows.

          3. Sure. https://youtrack.jetbrains.com/issue/CPP-3250

          Thank you for replies.

          Best regards,
          Yury.

          • Anastasia Kazakova says:

            May 1, 2015

            Yury, talking about semantic highlighting, we are still undecided. Though a feature request exists in our tracker – https://youtrack.jetbrains.com/issue/CPP-778.

            Right now CLion highlights all context usages of a symbol when placing a caret on it, or you can highlight them in a more discoverable way with Highlight Usages in File action and then navigate to the next/prev usage by Find Next/Find Previous action.

  16. Milan Stastny says:

    April 29, 2015

    I would like to see the Kernel code style
    https://www.kernel.org/doc/Documentation/CodingStyle

    • Anastasia Kazakova says:

      May 1, 2015

      Thanks for suggestion.

  17. Louis Thomas says:

    April 30, 2015

    Name Styles:
    * UpperCamelCase
    * lowerCamelCase
    * UPPER_SNAKE_CASE
    * lower_snake_case
    * UPPERSMASHCASE
    * lowersmashcase

    • Anastasia Kazakova says:

      May 1, 2015

      Could you provide more details – where do you want to use this – in completion, code generation?

  18. Steve Bush says:

    May 4, 2015

    I would like to see better Cmake support. My workflow is build, test, install. When I use the Cmake generator for Visual Studio I get project for updating Cmake config, tests, and install based on my CmakeLists.txt. I would like to see Clion support the test and install scenarios better.

    • Anastasia Kazakova says:

      May 4, 2015

      Thanks. We’ll keep this in mind.

  19. Alejandro says:

    May 13, 2015

    Hi, how about support for cuda, opencl,opengl and msbuild??

    • Anastasia Kazakova says:

      May 13, 2015

      We have it in some future plans. Feel free to upvote to increase the priority:
      CUDA – https://youtrack.jetbrains.com/issue/CPP-866
      OpenCL – https://youtrack.jetbrains.com/issue/CPP-1070
      msbuild – https://youtrack.jetbrains.com/issue/CPP-819

      • Stephen Karasek says:

        January 31, 2016

        Tried to log in and +1, but can’t. I’d love to buy your products, since you topped Komodo IDE in most metrics. However, since it’s easier to do Python/Django and C all-in-one with them, I’m afraid I’ll have to go with them. CUDA needs a myriad of add-ons with them, but with some effort it IS doable.

        If you had CUDA or OpenCL, it would be a major point in your favor. Komodo doesn’t exactly***, but it’s easier to do what I need to in a single IDE as opposed to having to use two (really three without CUDA or OpenCL support).

        • Anastasia Kazakova says:

          February 1, 2016

          Do you have a YouTrack account? What error do you get while logging?

          By the way, the EAP of the upcoming v1.5 brings Python support to CLion: https://blog.jetbrains.com/clion/2016/01/clion-1-5-eap-python-attach-local/

          • Stephen Karasek says:

            February 5, 2016

            Wow glad I checked this again; thanks for the link! (I do have a youtrack account, but login wasn’t working for some reason).

            No specific error, just I often seem to find myself after the first phase of a project trying to make the computation bits faster and re-usable. Putting both Python and C in a single environment makes this a no-brainer for non-parallel development.

            Simplicity is a good thing, so CUDA takes the cake for GPGPUs. And the ability to debug with support (manually with some integrated assistance, instead of extremely painstakingly manually) would be a huge help, certainly worth switching over dev environments for.

            I’ll give this one a shot- no reason not to now. CUDA support would make this something that the rest of my team would mass-migrate to, if included! In the meantime, we will have to keep using Eclipse (PTP) + PyDev for parallelization work…

            • Anastasia Kazakova says:

              February 5, 2016

              Thanks for the feedback. Stay tuned!

          • Stephen Karasek says:

            February 5, 2016

            (in case that wasn’t clear- NOT a fan of Eclipse, but it’s the only dev env that works in Linux with Nsight…)

  20. Alexey says:

    May 14, 2015

    Use 1.0.1, found an annoying issue in code formatter:
    The code like:
    private:
    BYTE * m_pPool; // the base pool of the whole
    BYTE * m_pCursor; // write point in the pool
    BlobHeader_t * m_pCurrentWriteBlob; // start of the last blob…

    it always automatically reformat, replacing all the tabs to the spaces (between the declaration and the comment). Any settings about tab/space flavour influents only to the leading (indent) tabs, but the next ones will be replaced just always.

    • Alexey says:

      May 14, 2015
      private:
      
      	BYTE * m_pPool;								// the base pool of the whole
      	BYTE * m_pCursor;							// write point in the pool
      	BlobHeader_t * m_pCurrentWriteBlob;			// start of the last blob we are writing to
      
  21. jeremy says:

    May 19, 2015

    Another bilingual case: I write code in interleaved python, cython and C/C++ for performance reasons. Where I need intense performance, I use C or C++. Where I would prefer convenience and rapid iteration (or need to do heavy string processing), I use python. And I glue this all together with cython and CMake.

    Right now, I write all of the code in PyCharm for python and vim for C/C++. But I’d definitely swap to CLion if there was some integration between PyCharm and CLion.

    • Anastasia Kazakova says:

      May 19, 2015

      Thank you very much for the details. I’ve added your comment here: https://youtrack.jetbrains.com/issue/CPP-434 if you don’t mind.

    • Stephen Karasek says:

      January 31, 2016

      Agreed! When this is added, please let me know. Also, any form of CUDA or OpenGL/CL.

  22. Cees de Groot says:

    September 29, 2015

    With regards to the plugin – it seems that the whole licensing model just got overhauled, and now I dunnow what to to. There doesn’t seem to be a community edition for CLion (I only do hobby development in C/C++ – often AVR/Arduino by the way), so am I now going to pay for Ultimate and CLion only to find out in half a year there’s a free plugin (like the Ruby, Python plugins that are bundled with Ultimate)? Doesn’t make me willing to part with money at this point.

    • Anastasia Kazakova says:

      September 29, 2015

      The plugin is not planned for the upcoming year at least.

  23. Alex says:

    March 8, 2016

    In my daily work we use both Java and C++ (different components, JNI) and it will be very usefull to have one IDE for both. Is there any plan to have CLion plugin for IDEA?

    • Anastasia Kazakova says:

      March 8, 2016

      For JNI you can use Android Studio now. It includes C/C++ support based on CLion.
      CLion plugin for IntelliJ IDEA is planned, but not in the nearest or upcoming plans, since we have quite a lot of things with higher priority in the queue.

  24. Ovais Reza says:

    April 5, 2016

    What I would like to see templates, to quickly setup projects. If I want to develop Kernel module, most of the stuff should be pretty standard and I should be able to start quickly with a template.

Subscribe

Subscribe for updates