# CLion Plugin Development
Introduction to developing plugins for CLion.
[CLion](https://www.jetbrains.com/clion/) is an IntelliJ Platform-based product.
Plugin projects for CLion can be developed using [IntelliJ IDEA](idea.md).
> CLion is free for non-commercial use
## CLion Plugin Setup
### Gradle Build Script
Define a dependency using [`clion()`](tools_intellij_platform_gradle_plugin_dependencies_extension.md), see _Versions_ link on top of this page for all available versions.
See [](tools_intellij_platform_gradle_plugin.md#dependenciesLocalPlatform) for using a local installation.
A dependency on the bundled `com.intellij.clion` plugin must be added using the [`bundledPlugin()`](tools_intellij_platform_gradle_plugin_dependencies_extension.md#plugins) helper.
Minimum build.gradle.kts setup:
```kotlin
repositories {
mavenCentral()
intellijPlatform {
defaultRepositories()
}
}
dependencies {
intellijPlatform {
clion("")
bundledPlugin("com.intellij.clion")
}
}
```
> When targeting 2020.3, see this [migration guide](https://blog.jetbrains.com/clion/2020/12/migration-guide-for-plugins-2020-3/).
>
{style="warning"}
The configuration of CLion plugin projects follows the methods described in [Configuring Plugin Projects using a Product-Specific Attribute](dev_alternate_products.md#using-a-product-specific-attribute), and [Configuring the plugin.xml File](dev_alternate_products.md#configuring-pluginxml).
The table below summarizes the [](tools_gradle_intellij_plugin.md) 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.
| `gradle-intellij-plugin` Attribute | Attribute Value |
|--------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|
| [`intellij.type`](tools_gradle_intellij_plugin.md#intellij-extension-type) | `CL` for the product CLion. |
| [`intellij.version`](tools_gradle_intellij_plugin.md#intellij-extension-version) | Set to the targeted CLion version, e.g. `2019.3.1`. |
| [`intellij.plugins`](tools_gradle_intellij_plugin.md#intellij-extension-plugins) | No specific declaration is needed. |
| [`intellij.downloadSources`](tools_gradle_intellij_plugin.md#intellij-extension-downloadsources) | `false` is required because no public source code is available. |
| [`runIde.ideDir`](tools_gradle_intellij_plugin.md#tasks-runide-idedir) | Not needed; the Development Instance will automatically match `intellij.type`. |
### plugin.xml
The dependency on the CLion APIs must be declared in the [plugin.xml](plugin_configuration_file.md) file.
As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the [``](plugin_configuration_file.md#idea-plugin__depends) tags must declare `com.intellij.modules.clion` module dependency,
or `com.intellij.clion` plugin dependency when targeting only versions 2020.3+.
## Available CLion APIs
> See [](clion_extension_point_list.md) for the complete list.
>
{style="note"}
Use the [Exploring APIs as a Consumer](plugin_compatibility.md#exploring-apis-as-a-consumer) process to identify the JAR files under the External Library `Gradle:com.jetbrains:clion:`.
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:
* [C/C++ Coverage](https://github.com/zero9178/C-Cpp-Coverage-for-CLion)
* [C/C++ Single File Execution](https://github.com/corochann/SingleFileExecutionPlugin)