CLion 2026.1 ヘルプ

CLion 用のプラグインを開発する

CLion の特定の機能性を欠くとき、独自のプラグインを書くことを考えるかもしれません。この記事は、IntelliJ プラットフォームプラグイン開発の基本を理解し、CLion プラグインを実装する最初のステップを案内することを目的としています。

CLion プラグインは IntelliJ プラットフォームの拡張機能であるため、一般的には特定の Java プロジェクトです。IntelliJ プラグイン開発では、2 つのワークフローがサポートされています。gradle-intellij-plugin(英語)Gradle と共にビルドシステムとして使用するか(推奨される方法)、DevKit(英語) を IntelliJ IDEA 独自のビルドシステムと共に使用します。

プラグイン開発用の IDE として、IntelliJ IDEA Community または Ultimate エディションを使用してください。

IntelliJ IDEA 自体とは別に、ターゲット CLion ディストリビューションが必要になります。Gradle ベースのアプローチでは、ビルドスクリプトによって自動的にダウンロードできます。DevKit を使用する場合は、必ず CLion を手動でインストールしてください。

プラットフォームオープン API

CLion は、安定性と詳細な説明が保証された独自のパブリック API を提供していませんが、プラットフォームオープン API(英語) のすべての機能を使用できます。Platform API を探索する効果的な方法は、公式リポジトリ(英語)から IntelliJ IDEA CommunityEdition のソースを取得してインスペクションすることです。

IntelliJ プラットフォームの API はリリース間で変わる可能性があるため、プラグインの機能に影響します。そのような変更は IntelliJ プラットフォームとプラグインの非互換な変更(英語)にリストされています。CLion の内部 SDK は予告なく変更されることがあります。

CLion プラグインの API の使用についてサポートが必要な場合は、コミュニティフォーラムでお気軽にお問い合わせください

拡張

IntelliJ プラットフォームは、プラグインが新しい機能を追加したり、既存の機能をカスタマイズしたりするための拡張機能と拡張ポイント(英語)を提供します。プラグインは、plugin.xml ファイルに 1 つまたは複数の拡張 <extenstions> または拡張ポイント <extensionPoints> を実装することを宣言する必要があります。使用可能な拡張機能と拡張ポイントのリストを取得するには、CommunityEdition ソースのこのディレクトリにある * Extention/ * ExtentionPoints ファイルを調べましょう。

一般的な拡張ポイントは次のとおりです。

プラグイン依存関係

プラグインは他のプラグインのクラスに依存している可能性があります。この場合、プラグインはバンドル、サードパーティ、独自のプラグインのいずれかになります。依存関係の表現の詳細については、プラグイン依存関係(英語)を参照してください。

プラグインは、どの製品 (IntelliJ ベースのすべての IDE、CLion のみ、または一部のサブセット) と互換性があるかを指定する必要があります。これを行うには、plugin.xml<depends> タグを使用してモジュールの依存関係を宣言します (IntelliJ 製品とのプラグイン互換性(英語)を参照)。

一部のモジュールはすべての IntelliJ ベースの製品で使用できますが、次のモジュールは特に CLion で使用できます。

  • com.intellij.modules.cidr.lang - C/C++ 言語サポート (このモジュールは Android Studio でも使用可能)。

  • com.intellij.modules.cidr.debugger - ネイティブデバッガーのサポート (Android Studio でも)

  • com.intellij.modules.clion - コア CLion 機能。

Plugin.xml ファイル

plugin.xml ファイルは、プラグインメタデータ(名前、説明、作成者、変更ログ、実装された機能のリスト)を含む主要なプラグイン記述子(英語)です。

name、id、descriptionvendor の値は、プラグインをプラグインデータベースに正しく登録するために必要です。前述のとおり、すべての depend パラメーターは、プラグインが依存するモジュールの ID です。依存パラメーターのリストは、互換性のある製品を暗黙的に定義します。

CLion プラグイン入門

さらに、Gradle ベースのアプローチを、すべての新しいプラグインプロジェクトに推奨されるアプローチとして取り上げます。DevKit ワークフローは、既存のプラグインでも引き続きサポートされていますが、DevKIt を使う(英語)で説明されています。

まず、IntelliJ IDEA Community または Ultimate をインストールします。開始する前に、2 つのバンドルされたプラグイン GradleDevKit の両方が IntelliJ IDEA インスタンスで有効になっていることを確認してください(設定 | プラグイン | インストール済みに移動し、名前でプラグインを検索してください)。

Gradle ベースのワークフロー

IDE メインメニューに挨拶を追加し、CLion 用にカスタマイズするプラグインの例を見てみましょう。

  1. 追加のライブラリおよびフレームワークのリストで IntelliJ プラットフォームプラグインを選択して、新しい Gradle プロジェクトを作成します。

    new gradle project for clion plugin
  2. 新しい Gradle プロジェクトを作成するプロセスを実行しますデフォルトの gradle ラッパーを使用するオプションを選択することをお勧めします。そうすると、IntelliJ IDEA は Gradle タスクの実行に必要なすべてのものを自動的に構成します。

    gradle wrapper for clion plugin
  3. テンプレートプラグインプロジェクトの準備ができたら、表示 | ツールウィンドウ | Gradle から Gradle ツールウィンドウを呼び出し、runIde タスクに注目してください。このタスクは、プラグインのターゲット IDE を起動します(デフォルトでは、IntelliJ IDEA に構成されています)。

    template plugin project

    gradle-intellij-plugin によって提供されるタスクの完全なリスト(英語)を参照してください。

  4. それでは、デフォルトのプロジェクトを変更しましょう。

    • HelloAction という新しい Java クラスを追加します。

      import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; public class HelloAction extends AnAction { public HelloAction() { super("Hello"); } public void actionPerformed(AnActionEvent event) { Project project = event.getProject(); Messages.showMessageDialog(project, "Hello world!", "Greeting", Messages.getInformationIcon()); } }
    • 次のダミーコードを plugin.xml に入れます。

      <idea-plugin> <id>org.helloplugin</id> <name>Hello Action Project</name> <version>0.0.1</version> <vendor email="dummy" url="dummy">dummy</vendor> <depends>com.intellij.modules.lang</depends> <extensions defaultExtensionNs="com.intellij"> </extensions> <actions> <group id="MyPlugin.SampleMenu" text="Greeting" description="Greeting menu"> <add-to-group group-id="MainMenu" anchor="last"/> <action id="Myplugin.Textboxes" class="HelloAction" text="Hello" description="Says hello"/> </group> </actions> </idea-plugin>
    • build.gradle スクリプトの intellij エントリを変更します (詳細については、DSL の設定(英語)を参照してください)。

      intellij { version 'LATEST-EAP-SNAPSHOT' type 'CL' }

      CLion は、2019.2 EAP と共に Maven 互換のアーティファクトリポジトリ(英語)に公開されました。現在、LATEST-EAP-SNAPSHOT または 191-EAP-SNAPSHOT のいずれかをバージョン指定子として使用できます。

  5. これで runIde タスクを実行でき、CLion メインメニューの挨拶を見ることができます。

    new menu item as a plugin

さらなるステップ

上記の例は非常に基本的なものであり、CLion の詳細がなく、一般的な IntelliJ 機能のみを使用しています。さらに深く掘り下げるには、SDK ドキュメント、IntelliJ SDK ドキュメント FAQ(英語)コミュニティフォーラムプラグインの構造(英語)セクションと CLion プラグイン開発(英語)を調べてください

カスタム言語サポート用のプラグインの開発に興味がある場合は、Platform SDK ドキュメントの専用セクション(英語)を参照し、Antlr のプラグイン開発ノート(英語)を確認してください。PSI ビューアー(英語)プラグインは、プログラム構造インターフェース PSI(英語) に慣れるために役立ちます。

プラグインのテスト(英語)に関するガイダンスドキュメントも参照してください。プラグインの公開のトピックについては、Gradle によるプラグインの公開(英語)および DSL の公開(英語)で説明されています。

2024 年 10 月 08 日

関連ページ:

Gradle

Gradle は、C/C++ ライブラリとアプリケーションをビルドするためのプラグインを提供するビルド自動化システムです。CLion では、cpp-application および cpp-library プラグインに基づく Gradle プロジェクトを操作できます(C/C++ Gradle プラグインの詳細については、このブログ投稿: 新しい C++ プラグインの紹介を参照してください)。CLion での完全に機能する Gradle サポートは開発中です。フィードバックを共有し、このチケットの更新をフォロ...

Gradle

IntelliJ IDEA は Gradle との完全な統合をサポートしており、ビルドプロセスの自動化に役立ちます。新しい Gradle プロジェクトを簡単に作成したり、既存のプロジェクトを開いて同期したり、複数のリンクされたプロジェクトを同時に操作したり、管理したりできます。Gradle プロジェクトを作成して WSL 環境に保存したり、WSL ファイルシステムから開いたりすることもできます。詳細については、WSL のセクションを参照してください。新規 Gradle プロジェクトを作成する新規プロジ...

有用な非バンドルプラグイン

JetBrains マーケットプレイスには、すぐに使える CLion の機能を強化するためにインストールできる 4000 を超えるプラグインが含まれています。これらのプラグインの一部はすでに CLion にバンドルされており、使用を開始するために事前のアクションは必要ありません。ただし、CLion のワークフローを改善したり変革したりできる、他にも役立つ定性的なプラグインがあります。この記事では、そんな貴重なプラグインを厳選して紹介します。プラグインは、対象となるタスクによってグループ化され、そ...