CLion 2024.1 ヘルプ

Compilation database

CMakeGradleMakefile に基づいていないプロジェクトで作業している場合でも、CLion が提供する高度な IDE 機能を利用できます。1 つの方法は、非 CMake プロジェクトをインポートし、CLion にそれを単純な CMake 構造に変換させることです。別のオプションは、compilation database をロードしてプロジェクトを開くことです。

compilation database を使用すると、CLion はプロジェクトファイルを検出し、インクルードパスやコンパイルフラグなど、必要なすべてのコンパイラー情報を抽出できます。このアプローチにより、プロジェクトを CMake、Makefile、Gradle から独立させたまま、IDE で操作し、その機能を完全に体験することができます。

compilation database(英語) は、compile_commands.json という名前の JSON(英語) -formatted ファイルであり、プロジェクト内のすべてのコンパイル単位に関する構造化データが含まれています。

次のスニペットは、JSON コンパイルデータベースの例を示しています。

{ "directory": "/Users/me/prj/Calendar/", "command": "/usr/local/bin/g++-7 -I/Users/me/prj/Calendar/calendars -g -std=c++11 -o calendar_run.dir/main.cpp.o -c /Users/me/prj/Calendar/main.cpp", "file": "/Users/me/prj/Calendar/main.cpp" }, { "directory": "/Users/me/prj/Calendar/calendars", "command": "/usr/local/bin/g++-7 -I/Users/me/prj/Calendar/calendars -g -std=c++11 -o calendars.dir/calendar_defs.cpp.o -c /Users/me/prj/Calendar/calendars/calendar_defs.cpp", "file": "/Users/me/prj/Calendar/calendars/calendar_defs.cpp" }

コマンドオブジェクトと呼ばれるエントリの配列が表示されます。各コマンドオブジェクトは、翻訳単位のメインファイル、作業ディレクトリ、実際のコンパイルコマンド (または引数のリスト)、およびオプションでコンパイルステップによって作成された出力の名前を表します。形式の詳細については、公式ドキュメント(英語)を参照してください。

compilation database の生成

プロジェクト用の compilation database を入手するには、さまざまなオプションがあります。コンパイラー、ビルドシステム、専用ツールで生成できます(バリアントの拡張リスト(英語)を参照)。いくつかの例を以下に示します。

CMake:

  • CMAKE_EXPORT_COMPILE_COMMANDS(英語) フラグを使用してください。走れる

    cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .

    CMakeLists.txt スクリプトに次の行を追加します。

    set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

    compile_commands.json ファイルは build ディレクトリに置かれます。

Clang(バージョン 5.0 以降):

  • -Mj(英語) オプションは、入力ファイルごとにコンパイルエントリを書き込みます。これをプロジェクト内の各ファイルに使用し、出力を JSON 形式の compilation database にマージできます ( 手順の例(英語)を参照)。

Ninja(バージョン 1.2 以降):

  • コンパイルデータベースを取得するには、-t compdb(英語) オプションを使用します。ルール名は引数として必要であることに注意してください。-t compdb rule1 rule2... ルールリストは Ninja ビルドファイル(デフォルト名 build.ninja(英語))で提供されます。たとえば、次のようになります。

    rule cc command = gcc -c -o $out $in description = CC $out rule link command = gcc -o $out $in description = LINK $out

    cc という 1 つのルールのみの場合にコンパイルデータベースを生成するには、次のように指定します。

    -t compdb cc > compile_commands.json

    ただし、複数のルールの場合は、ビルドファイルから正確な名前を取得し、それを compdb に渡す必要があります ( 考えられる解決策の 1 つ(英語)を参照してください)。

メイクベースのプロジェクト:

  • compiledb-generator(英語) ツールは、メイクベースのビルドシステム用のコンパイルデータベースを作成します。

Bear と intercept-build ツール:

  • scan-build(英語)Bear(英語)intercept-build は、ビルド中にコンパイラー呼び出しをインターセプトすることにより、compilation database を取得するのに役立つツールです。

SourceTrail Visual Studio 拡張機能:

CLion で compilation database を操作する

プロジェクトの compilation database を作成したら、CLion での作業を開始できます。

プロジェクトを読み込む

  1. メインメニューからファイル | 開くを選択します。

  2. compile_commands.json ファイルまたはそれが含まれるディレクトリを見つけて、「開く」をクリックします。

  3. プロジェクトとして開くをクリックします。

    Opening a compilation database project
  4. CLion はプロジェクトファイルを検出し、compile_commands.json のすべてのコマンドのステータスをビルドツールウィンドウに表示します。

    Compilation database project

    この時点で、CLion のコードインサイト、リファクタリング、分析、ナビゲーションがプロジェクトで完全に利用できるようになります。

ツールチェーンを確認してください

  1. 設定 | ビルド、実行、デプロイ | Compilation Database

  2. プロジェクトファイルの解決に使用するツールチェーンを選択します。

    Toolchain for compilation database

    CLion は、設定 | ビルド、実行、デプロイ | ツールチェーンから利用可能なすべてのツールチェーンを提案します。リモートホストツールチェーンは現在 compilation database プロジェクトではサポートされていないことに注意してください。

プロジェクトルートの変更

デフォルトでは、プロジェクトルートは compilation database ファイルを含むディレクトリに設定されています。ただし、これは必ずしも便利ではありません。たとえば、一部のプロジェクトファイルが compile_commands.json を含むディレクトリの外(つまりプロジェクトルートの外)にある場合、そのようなファイルは実際のフォルダー構造に関係なくツリーに一覧表示されます。この場合、プロジェクトルートを compile_commands.json とプロジェクトファイルの両方を含む親ディレクトリに設定する必要があります。

  1. プロジェクトルートを変更するには、メインメニューからツール | Compilation Database | プロジェクトルートを変更するを選択し、プロジェクトルートの新しい場所を設定します。

自動再読み込みを設定する

デフォルトでは、VCS 更新などの外部イベントの場合を除いて、CLion は compile_commands.json の変更時にプロジェクトを自動的に再読み込みしません。この動作は、ビルドツール設定で変更できます。

  1. 設定 | ビルド、実行、デプロイ | ビルドツールに移動します。

  2. 自動再読み込みオプションのいずれかを選択します。

    Auto-reload settings
    • 任意の変更 - プロジェクトの再ロードは、compile_commands.json が変更されるとトリガーされます。

    • 外部の変更(デフォルト)- プロジェクトは、VCS 更新などの外部イベントでのみ再ロードされます。compile_commands.json で他の変更があった場合は、プロジェクトを手動で再ロードする必要があります。次のいずれかのオプションを使用します。

      • ボタン Ctrl+Shift+O

      • エディターに表示されるポップアップをクリックします。

        Editor popup for reloading the project
      • ビルドツールウィンドウで Reimport Compilation Database Project をクリックします。

        The Reimport project icon
      • メインメニューからツール | Compilation Database | Reload Compilation データベースプロジェクトを選択します。

compile_database.json のコーディング支援

CLion は JSON ファイル形式をネイティブにサポートしているため、IDE 内で compile_database.json ファイルを編集でき、ハイライトとコード補完によるヘルプが表示されます。

Code completion in compile_database.json

CLion は、compile_database.json ファイルと compilation database JSON スキーマの準拠性をチェックします。設定 | エディター | インスペクション | JSON および JSON5 で対応するインスペクションを調整できます。

JSON inspections for compile_database.json

1 つのファイルをコンパイルする

compilation database プロジェクトのビルド機能は CLion にはまだ実装されていませんが、プロジェクト全体をビルドせずに単一のファイルで変更をチェックすると便利な場合があります。この目的のために、CLion は再コンパイルアクションを提供します。個々のソースファイルとヘッダーファイル、およびプロジェクトツリーで選択されたファイルのグループにも利用できます。ヘッダーの場合、CLion は resolve コンテキストを使用して、指定されたヘッダーを含むソースファイルの 1 つをコンパイルします。再コンパイルは、ディレクトリおよび C/C++ 以外のファイルでは無効になっています。

  • 現在開いているファイルの再コンパイルを呼び出すには、メインメニューからビルド | 再コンパイルを選択するか、Ctrl+Shift+F9 を押します。

  • プロジェクトツリー内のファイルの場合は、コンテキストメニューの再コンパイルオプションを使用します (または同じ Ctrl+Shift+F9 キーを押します)。

  • 複数のファイルを再コンパイルするには、プロジェクトツリーでファイルを選択し、コンテキストメニュー Ctrl+Shift+F9 から選択したファイルを再コンパイルするオプションを使用します。複数のファイルに使用すると、最初のコンパイルが失敗すると再コンパイルが停止することに注意してください。

ファイルを再コンパイルすると、CLion は compile_commands.json の対応するコマンドオブジェクトから必要な情報を抽出します。コンパイルコマンドライン(ただし、CLion は出力を抑制し、出力ファイルを指定するフラグを削除します)、使用するコンパイラーです。

ディレクトリを .. とマークする

ディレクトリをマークアクションは、compilation database プロジェクトでも使用できます。プロジェクトツリーでディレクトリを選択し、右クリックして、ディレクトリをマークアクションを選択します。

使用例の説明と、CLion がマークされたディレクトリを処理する方法の詳細については、セクション外部ソースファイルを参照してください。

ビルドと実行

Compilation database 自体にはビルド、実行、デバッグアプリケーションに必要なデータがありません。ただし、compilation database プロジェクト用のカスタムビルドターゲットを追加し、それらのターゲット用にカスタムの実行 / デバッグ構成を作成することでワークフローを設定できます。

関連ページ:

クイック CMake チュートリアル

このチュートリアルでは、CLion で単純な CMake プロジェクトを作成および開発するプロセスを説明します。段階的に、ビルドシステムとしての CMake の基本と、CMake 固有の IDE 設定とアクションを学習します。1. シンプルな CMake プロジェクト:CMake は、CMakeLists と呼ばれるスクリプトを使用して、特定の環境用のビルドファイル (Unix マシンのメイクファイルなど) を生成するメタビルドシステムです。CLion で新しい CMake プロジェクトを作成すると、...

Gradle

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

Makefile プロジェクト

CLion での Makefile プロジェクトの完全なサポートは、まだ進行中の作業です。CPP-494 にリンクされたチケットを使用して、フィードバックを残し、希望する機能に投票してください。Makefile プロジェクトを開くメインメニューからを選択します。CLion が最上位の Makefile を含むフォルダーをポイントします。プロジェクトをクリーンアップするように求められます。Make ビルドはインクリメンタルであり、更新されたファイルのみがコンパイルされるため、プロジェクトのロードにはクリ...

CMakeLists.txt

CMakeLists.txt ファイルには、プロジェクトのソースファイルとターゲット(実行可能ファイル、ライブラリ、その両方)を記述する指示文と命令のセットが含まれています。新しいプロジェクトを作成すると、CLion は自動的に CMakeLists.txt ファイルを生成してプロジェクトのルートディレクトリに配置します。プロジェクトを開くには、CLion を最上位の CMakeLists.txt にポイントしてプロジェクトとして開くを選択します。以下の例は、単純な「Hello, World」プロジェクト...

さまざまな言語の CLion 機能

以下の表は、サポートされている各言語で使用可能な CLion 機能を示しています。提示された言語に加えて、CLion はデフォルトで TypeScript、CoffeeScript、Less、Sass/SCSS、Stylus、XSLT、XPath をサポートし、プラグイン (Rust または Fortran など) を介して他の多くの言語もサポートします。主な特徴:認識されたファイルタイプ

ビルドなしでファイルをコンパイルする

開発プロセスをスピードアップするために、プロジェクト全体をビルドせずに 1 つのファイルをコンパイルしたい場合があります。この目的のために、CLion は再コンパイルアクションを提供します。再コンパイルは、個々のソースファイルとヘッダーファイル、およびプロジェクトツリーで選択されたファイルのグループで利用できます。ヘッダーの場合、CLion は resolve コンテキストを使用して、指定されたヘッダーを含むソースファイルの 1 つをコンパイルします。再コンパイルは、ディレクトリおよび非 C/C+...