Compilation database
CMake、 Gradle、 Makefiles に基づいていないプロジェクトで作業している場合でも、CLion が提供する高度な IDE 機能を利用できます。 非 CMake プロジェクトを インポートし、CLion でシンプルな CMake 構造に変換する方法もあります。 別のオプションは、 compilation database をロードしてプロジェクトを開くことです。
compilation データベースを使用すると、CLion がプロジェクトファイルを検出し、インクルードパスやコンパイルフラグなど、必要なすべてのコンパイラー情報を抽出できます。 このアプローチにより、プロジェクトを CMake、Makefile、Gradle から 独立させたまま、IDE で操作し、その機能を完全に体験することができます。
compilation database(英語) は、 compile_commands.json という名前の JSON(英語)-formatted ファイルであり、プロジェクト内のすべてのコンパイル単位に関する構造化データが含まれています。
次のスニペットは、JSON コンパイルデータベースの例を示しています。
コマンドオブジェクトと呼ばれるエントリの配列が表示されます。 各 コマンドオブジェクトは 、翻訳単位のメイン ファイル 、作業 ディレクトリ 、実際のコンパイル コマンド (または 引数を指定できます。 のリスト)、およびオプションでコンパイルステップによって作成された output の名前を表します。 形式の詳細については、 公式ドキュメント(英語)を参照してください。
compilation database の生成
プロジェクト用の compilation データベースを取得するには、さまざまな方法があります。コンパイラー、ビルドシステム、専用ツールで生成できます(バリアントの詳細なリストを参照)。 いくつかの例を以下に示します:
CMake:
CMAKE_EXPORT_COMPILE_COMMANDS(英語) フラグを使用してください。 走れる
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)compile_commands.json ファイルはビルドディレクトリに配置されます。
Clang(バージョン 5.0 以降):
Ninja(バージョン 1.2 以降):
compilation データベースを取得するには、 -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のみの場合、次のように指定して compilation データベースを生成します:-t compdb cc > compile_commands.json複数のルールの場合は、ビルドファイルから正確な名前を取得し、それらを compdb に渡す必要があります(考えられる解決策の一つを参照)。
メイクベースのプロジェクト:
compiledb-generator(英語) ツールは、メイクベースのビルドシステム用のコンパイルデータベースを作成します。
Bear と intercept-build ツール:
scan-build(英語) の Bear(英語) と intercept-build は、ビルド中にコンパイラー呼び出しをインターセプトすることにより、compilation database を取得するのに役立つツールです。
SourceTrail Visual Studio 拡張機能:
SourceTrail エクステンション(英語)は、 Visual Studio ソリューション用のコンパイルデータベースを生成します。
CLion で compilation database を操作する
プロジェクト用の compilation データベースを作成したら、CLion で作業を開始できます。
プロジェクトを読み込む
メインメニューから を選択します。
compile_commands.json ファイルまたはそれが含まれるディレクトリを見つけて、「オープン 」をクリックします。
プロジェクトとして開く をクリックします:

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

この時点で、CLion のコードインサイト、リファクタリング、分析、ナビゲーションがプロジェクトで完全に利用できるようになります。
ツールチェーンを確認する
へ
プロジェクトファイルの解決に使用するツールチェーンを選択します。

CLion は、 から利用可能なすべてのツールチェーンを提案します。 リモートホスト ツールチェーンは現在 compilation database プロジェクトではサポートされていないことに注意してください。
プロジェクトルートの変更
デフォルトでは、プロジェクトのルートは compilation データベースファイルが含まれるディレクトリに設定されます。 ただし、これは常に便利とは限りません。たとえば、一部のプロジェクトファイルが compile_commands.json を含むディレクトリの外(つまりプロジェクトルートの外)にある場合、そのようなファイルは実際のフォルダー構造に関係なくツリーに表示されます。 この場合、プロジェクトルートを compile_commands.json とプロジェクトファイルが両方含まれる親ディレクトリに設定する必要があります。
プロジェクトルートを変更するには、メインメニューから を選択し、プロジェクトルートの新しい場所を設定します。
自動再読み込みを設定する
デフォルトでは、VCS 更新などの外部イベントの場合を除いて、CLion は compile_commands.json の変更時にプロジェクトを自動的に再読み込みしません。 この動作は、 ビルドツール 設定で変更できます。
に進みます。
自動再読み込みオプションのいずれかを選択します。

任意の変更 - プロジェクトの再ロードは、 compile_commands.json が変更されるとトリガーされます。
外部の変更 (デフォルト)- プロジェクトは、VCS 更新などの外部イベントが発生したときにのみ再ロードされます。 compile_commands.json で他の変更があった場合は、プロジェクトを手動で再ロードする必要があります。 次のいずれかのオプションを使用します。
ボタン Ctrl+Shift+O
エディターに表示されるポップアップをクリックします:

ビルド ツールウィンドウで
をクリックします:

メインメニューから を選択します。
compile_database.json のコーディング支援
CLion は JSON ファイルフォーマットをネイティブにサポートしているため、IDE 内で compile_database.json ファイルを編集でき、ハイライトやコード補完によるヘルプが利用できます:

CLion は、 compile_database.json ファイルが compilation データベース JSON スキーマに準拠しているかをチェックします。 で対応するインスペクションを調整できます。

1 つのファイルをコンパイルする
compilation データベースプロジェクトのビルド機能は CLion にはまだ実装されていませんが、プロジェクト全体をビルドせずに単一ファイルの変更を確認できて便利な場合があります。 この目的のために、CLion は 再コンパイルアクションを提供します。 個々のソースファイルとヘッダーファイル、およびプロジェクトツリーで選択されたファイルのグループにも利用できます。 ヘッダーの場合、CLion は resolve コンテキストを使用して、指定されたヘッダーを含むソースファイルのいずれかをコンパイルします。 再コンパイル は、ディレクトリおよび C/C++ 以外のファイルでは無効になっています。
現在開いているファイルの 再コンパイル を呼び出すには、メインメニューから を選択するか、 Ctrl+Shift+F9 を押します。
プロジェクトツリー内のファイルの場合は、コンテキストメニューの 再コンパイル オプションを使用します (または同じ Ctrl+Shift+F9 キーを押します)。
複数のファイルを再コンパイルするには、プロジェクトツリーでファイルを選択し、コンテキストメニュー Ctrl+Shift+F9 から 選択したファイルを再コンパイルする オプションを使用します。 複数のファイルに使用すると、最初のコンパイルが失敗すると再コンパイルが停止することに注意してください。
再コンパイル ファイルを処理する際、CLion は compile_commands.json 内の対応する コマンドオブジェクトから必要な情報、つまりコンパイルコマンドライン(CLion は出力を抑制し、出力ファイルを指定するフラグを削除します)および使用するコンパイラーを抽出します。
ディレクトリとしてマーク。。
ディレクトリをマーク アクションは、compilation database プロジェクトでも使用できます。 プロジェクトツリーでディレクトリを選択し、右クリックして、 ディレクトリをマーク アクションを選択します。
ユースケース説明や、CLion がマークされたディレクトリをどのように扱うかの詳細については、セクション 外部ソースファイル を参照してください。
ビルドと実行
Compilation database 自体には ビルド、実行、デバッグ アプリケーションに必要なデータがありません。 ただし、compilation データベースプロジェクト用に カスタムビルドターゲットを追加し、それらのターゲット用に カスタム実行/デバッグ構成を作成することで、ワークフローを設定できます。