CLion Plugin Development
CLion is an IntelliJ Platform-based product. Plugin projects for CLion can be developed using IntelliJ IDEA.
CLion Plugin Setup
Gradle Build Script
Define a dependency using clion(), see Versions link on top of this page for all available versions. See Local IntelliJ Platform IDE Instance for using a local installation.
A dependency on the bundled com.intellij.clion plugin must be added using the bundledPlugin() helper.
Minimum build.gradle.kts setup:
The configuration of CLion plugin projects follows the methods described in Configuring Plugin Projects using a Product-Specific Attribute, and Configuring the plugin.xml File.
The table below summarizes the Gradle IntelliJ Plugin (1.x) attributes to set in the plugin project's Gradle build script. Click on an entry in the table's Attribute column to go to the documentation about that attribute.
| Attribute Value |
|---|---|
| |
Set to the targeted CLion version, e.g. | |
No specific declaration is needed. | |
| |
Not needed; the Development Instance will automatically match |
plugin.xml
The dependency on the CLion APIs must be declared in the plugin.xml file. As described in Modules Specific to Functionality table, the <depends> tags must declare com.intellij.modules.clion module dependency, or com.intellij.clion plugin dependency when targeting only versions 2020.3+.
C/C++ Language Engine: Nova and Classic
CLion provides two C/C++ language engines:
Nova – the current engine based on the ReSharper C++ engine. It is enabled by default since CLion 2025.3 and is the only engine bundled with the IDE since CLion 2026.2.
Classic – the original in-IDE engine, backed by the
com.intellij.cidr.langplugin and thecom.jetbrains.cidr.langAPIs. Since CLion 2026.2, it is no longer bundled and is distributed only as a separate JetBrains Marketplace plugin.
Using the Classic C/C++ Language APIs
The classic C/C++ language support — including OCFileType, OCLanguage, OCFile, and the rest of the com.jetbrains.cidr.lang package — is available in the C/C++ Language Support via Classic Engine plugin (ID com.intellij.cidr.lang).
As this plugin is no longer bundled, declare a dependency on its Marketplace version using the plugin() function:
The com.intellij.modules.cidr.lang module dependency in the plugin.xml file stays unchanged:
Migrating to Nova
Nova represents C/C++ files with different classes located in the com.jetbrains.rider.cpp.fileType package:
Classic ( | Nova ( |
|---|---|
|
|
|
|
|
|
Nova performs C/C++ code analysis in a separate backend process and does not expose a frontend PSI model. Apart from the file type and language above (and basic traversal via com.jetbrains.rider.cpp.fileType.psi.CppElement), there is no replacement for the Classic frontend APIs, including:
PSI elements —
com.jetbrains.cidr.lang.psi.OCFile,com.jetbrains.cidr.lang.psi.OCIncludeDirective,com.jetbrains.cidr.lang.psi.OCPragma, and the rest of thecom.jetbrains.cidr.lang.psipackagesymbols — the
com.jetbrains.cidr.lang.symbolspackagetypes —
com.jetbrains.cidr.lang.types.OCTyperesolve and references — the
com.jetbrains.cidr.lang.resolvepackage
If your plugin cannot be migrated to CLion Nova yet, follow and vote for CPP-36085 to track improvements to Classic-to-Nova plugin migration.
Available CLion APIs
Use the Exploring APIs as a Consumer process to identify the JAR files under the External Library Gradle:com.jetbrains:clion:<version>. Test your plugin with versions of CLion you intend to support.
Open Source Plugins for CLion
When learning new APIs, it is helpful to have some representative projects for reference:
Getting Help
For plugin implementation support and questions, see the Getting Help section.