On May 7, we ran an exciting CLion Ask Me Anything session. 2 hours, 9 speakers, 7 demos, and 140+ questions – this was really inspiring and motivating for the team and hopefully useful for all attendees. The most frequent comment afterwards from the team members was, “Let’s do this again!”. We’d also like to say huge thanks for all your compliments and good wishes in the questions pane!
The recording of the webinar is now available on the JetBrainsTV YouTube channel. And here are some useful timestamps so you can instantly jump to any section:
- C++ language support
- 02:29 – The evolution of the language engines in CLion.
- 05:16 – Handling preprocessor code.
- 09:00 – Plans for Qt support.
- 15:30 – Code analysis tools in CLion, how to add support for more, and if/when CLion will support the C++ Code Guidelines rules.
- 18:57 – What are the plans for C++20 support?
- 19:55 – Does the CLion team participate in the C++ Committee Meetings and what are your goals there?
- 22:04 – CLion performance tips
- Project model support
- Remote development with CLion
- Embedded development with CLion
- 01:38:25 – Working with CTest in CLion
- 01:46:21 – General questions and final links.
Most interesting questions from the session
50+ questions were asked during registration, and 80+ came online. There were many duplicates, which made us realize that a few key topics required more attention from our side. We handled the questions during the webinar and followed up on some by email afterwards. Still, there are a few questions worth mentioning here, along with the answers.
Q: Template and generic programming debugging can be a pain compared to standard programming. Any tips to improve error/exception visibility and verbosity?
A: We can recommend a couple of tools here: Metashell and Templight. In the future, we plan to get some of these tools or some similar approaches integrated natively into CLion (CPP-4745).
Q: What would you recommend for improving CLion’s performance on my project?
A: Please check these Performance Tuning Tips from our webhelp. With any particular issue, please contact our support (email@example.com) or file a detailed report in our tracker.
Q: What are your plans for more native Docker support? Not over ssh but just using Docker exec to perform Docker commands with mapped drives and no rsync.
A: First of all, there’s a feature request you can follow for updates and comments – CPP-13751. The great news is that we are considering making these improvements as soon as possible. However, there are lots of open questions and interesting implementation challenges.
For example when we build the project model and collect compiler information (header roots, defines, compiler features, all the stuff that’s needed for correct code assistance), we may run the compiler thousands of times. For
docker exec this means that for each compiler call, we have to start the docker container, execute the command… and repeat it again and again (start, execute), thousands of times. So the question is, how does the performance of the direct ssh connection compare to
docker exec? We still need to investigate this.
And while we agree that project files synchronization is not needed, it’s not clear what we should do with the header roots inside the docker container.
Finally, we’d like to say that some preliminary support might come to CLion as soon as in v2020.2 or v2020.3.
Q: What are your plans for improving the performance of remote development in CLion?
A: The performance of building the CMake model is the most painful step right now (CPP-14984). This happens because the "Reloading CMake Project" step does not just run remote CMake, but it also includes processing CMake output and collecting compiler information (tons of remote compiler calls). So the plan is to reduce the number of remote process calls while collection compiler information. Other fixes include:
- Do not transfer unnecessary (binary) build artefacts to the local machine (CPP-15095).
- Improvements to remote project file transfer speed (CPP-14365, CPP-15396).
Q: Do you have any plans to integrate CTest into CLion?
A: We do not plan to directly support CTest at this time. The reason is that CTest pretty much duplicates the functionality of CLion run configurations. This is how you can use CTest via CLion’s built-in Run/Debug configurations:
- Open Run | Edit Configurations…
- Create a new one using the CMake Application template. Rename it to CTest, for example.
All Targetsin the Target field.
- For the Executable, do
Select Otherand find
- Define Working directory as macro
- You are all set. Simply run the newly created configuration.
Please see the webinar recording for the demo (01:38:25).
Q: How do I set up reversible debugging in CLion?
A: CLion currently doesn’t provide this feature out of the box, but you can set up reversible debugging with the Undo plugin. Please read this blog post and watch this live webinar recording for the details.
Q: How are Conan / package managers supported in CLion?
A: While no native support exists for now, there is a nice plugin from JFrog to integrate some Conan workflow into CLion. Check out this blog post for a quick start.
Q: Is there a guide for getting started with CLion plugin development?
A: Sure: https://www.jetbrains.org/intellij/sdk/docs/intro/welcome.html. Feel free to direct to us any questions you might have.
Your CLion team
The Drive to Develop