CLion 2023.3 ヘルプ

Docker ツールチェーン

Docker コンテナーでの開発を目的として、CLion は、専用の Docker ツールチェーンを介して完全な Docker 統合を提供します。詳細については、このビデオを参照してください。

サンプル Dockerfile

CLion で Docker 開発を開始できるように、Ubuntu ベースイメージの場合の Dockerfile の例を作成(英語)しました。このファイルをプロジェクトにコピーしてニーズに合わせて調整するか、参照として使用することができます。

サンプルファイルには、次の行とセクションが含まれています。

  • 上部のコメントには、コンテナーを構築するためのコマンドがあります。

  • FROM ubuntu:20.04 行は、コンテナーのベースイメージを参照します。

  • apt-get パーツは、すべてのツールチェーンの依存関係をコンテナーにインストールします。ここでは、ツールとそのバージョンを調整できます。

    コンテナーを構築する

    • Dockerfile の先頭から docker build コマンドを実行します。

      docker build -t clion/ubuntu/cpp-env:1.0 -f Dockerfile.cpp-env-ubuntu .

      プラットフォームと Docker 設定によっては、sudo を使用して実行する必要がある場合があります。

      このコマンドは、適切なツールチェーンの依存関係を持つ Ubuntu ベースイメージを構築します。

    Docker ツールチェーンを作成する

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

      Add toolchain をクリックし、Docker を選択します。

      Adding a Docker toolchain
    2. サーバーフィールドの歯車ボタンをクリックして、Docker イメージを追加します。

      Add a Docker image

      設定 | ビルド、実行、デプロイ | Docker で Docker サーバーを構成し、ツールチェーン設定でそれを選択することもできます。

    3. Docker イメージを選択し、ツールの検出が完了するまで待ちます。

      Docker toolchain configured

      コンテナー設定フィールドを使用して、ポートやボリュームのバインディングなどの追加のコンテナー設定を提供します。

      Docker container settings

    Docker ツールチェーンを使用したビルド、実行、デバッグ

    Docker ツールチェーンを構成した後、CMake プロファイルまたは Makefile の設定で選択できます。または、ツールチェーンをリストの一番上に移動して、デフォルトにします。

    Docker toolchain in a CMake profile
    • プロジェクトフォルダーは Docker コンテナーにマウントされ、その中でビルド / 実行 / デバッグが実行されます。

      デフォルトでは、プロジェクトフォルダーはコンテナーの /tmp フォルダーにマウントされます。ただし、ツールチェーンでパスマッピングが指定されている場合、CLion は代わりに使用します。

      例: プロジェクトルートが /data/code/project で、ツールチェーンパスマッピングが /data/code -> /code の場合、CLion はこのマッピングを再利用し、プロジェクトを /tmp/project にマウントしません。

    • CLion はコンテナーを起動し、コマンドの実行後にシャットダウンします。

      SELinux でマウントをバインドする

      :z 構成フラグを Docker バインドマウントに追加して、SELinux が有効なワークステーションで実行されているコンテナーにファイルとフォルダーを接続できます。これにより、CMake やその他のツールがシステム上のプロジェクトファイルやその他のファイルにアクセスできるようになります。

      1. 設定 / 環境設定 | 詳細設定 | Docker に移動します。

      2. 対応するチェックボックスを設定します。

        Binding for SELinux systems

      Windows での Docker ツールチェーンのパフォーマンスを向上させる

      Windows でのパフォーマンスを向上させるには、WSL2 バックエンドで Docker を使用することをお勧めします。

      1. WSL2 バックエンドを備えた Docker デスクトップ(英語)を設定します。

      2. Docker デスクトップアプリケーションで、設定 | リソース | WSL 統合に移動し、WSL ディストリビューション(たとえば、ubuntu-20.04)との統合を有効にします。

      3. プロジェクトソースを WSL ファイルシステム(たとえば、\\wsl$\ubuntu-20.04\tmp\llvm)に配置し、それを CLion で開いて、Docker ツールチェーンを構成します。

      WSL で Docker のデバッグ出力を有効にする

      WSL 内の Docker ツールチェーンを使用してデバッグするときにデバッグ出力を取得するには、wsl.conf を変更する必要があります。

      1. WSL シェルを開きます。

      2. wsl.conf ファイルを編集のために開きます。

        sudo $EDITOR /etc/wsl.conf
      3. 次の行を追加します。

        [automount] root = /mnt crossDistro = true options = "metadata"
      4. 変更内容を保管します。

      5. WSL を再起動します。これを行うには、wsl -t <distribution_name> を実行します。

      代替ワークフロー: ローカルソースでリモートを使用して Docker で開発する

      この場合、Docker ベースのツールチェーンは、ローカルソースを使用してリモートを介して構成されます。コンテナーは SSH デーモンで実行されている必要があります。

      リモートシナリオのサンプル Dockerfile

      remote-cpp-env(英語) サンプルファイルを使用します。2 つの追加セクションが含まれています。

      • ssh セクションでは、CLion が接続する SSH を設定します。

      • user セクションは、コンテナーにユーザーを作成します。

      1. コンテナーを構築する

      1. Dockerfile の上から docker build 行を使用します。

        docker build -t clion/remote-cpp-env:0.5 -f Dockerfile.remote-cpp-env .

        プラットフォームと Docker 設定によっては、sudo を使用して実行する必要がある場合があります。

        このコマンドは、適切なツールチェーンの依存関係を使用して Ubuntu ベースイメージを構築し、SSH を設定して、ユーザーを作成します。

      2. コンテナーを実行する

      1. 次のコマンド docker run を使用します。

        docker run -d --cap-add sys_ptrace -p127.0.0.1:2222:22 --name clion_remote_env clion/remote-cpp-env:0.5

        この行では、-d はコンテナーをデーモンとして実行し、--cap-add sys_ptraceptrace 機能を追加します。これはデバッグに必要です。

        -p 部分は、ポートマッピングを指定します。コンテナー(22)内のデフォルトの SSH ポートをホスト環境のポート 2222 として公開します。ここで使用可能なポート番号を指定できます。

      2. (オプション) -v フラグを使用してマップされたボリュームを作成できます: -v /local/path/to/project:/remote/path/to/project

        その後、設定 | ビルド、実行、デプロイ | デプロイに移動し、接続タイプをローカルまたはマウント済みフォルダーに変更して、パスマッピングを設定します。ローカルソースを使用したリモート: デプロイ構成を確認して調整するを参照してください。

      3. キャッシュされた SSH キーをクリアする

      1. コンテナーを構築して実行する最後のステップは、ssh-keygen コマンドです。これは、キャッシュされた SSH キーをすべてクリアします。localhost ポートは一時的にのみマッピングされ、別のコンテナーで再利用できるため、これは重要です。

        ssh-keygen -f "$HOME/.ssh/known_hosts" -R "[localhost]:2222"

      4. リモートホストツールチェーンを作成する

      この時点で、コンテナーは SSH サーバーデーモンで実行されており、CLion の標準リモート開発機能を使用してコンテナーに接続できます。

      1. リモートツールチェーンの作成に関する一般的な手順に従います。

        資格情報フィールドで、SSH 構成をセットアップします。

        • ホスト - ローカルホスト

        • ポート -2222

        • ユーザー名パスワード - Dockerfile で指定されているとおり

      2. 接続を確立した後、CLion はツールチェーンの検出を試みます。ツールはデフォルトの場所にインストールされているため、自動的に検出されます。

        Dockefile の apt-get 部分を変更してツールを他の場所にインストールする場合は、メイクC コンパイラーC++ コンパイラーデバッガーフィールドにパスを指定します。

      3. リモートツールチェーンを使用する CMake プロファイルを作成します。プロジェクトが再読み込みされるのを待ちます。

      ファイルがコンテナーに転送されたら、実行 / デバッグ構成スイッチャーでプロファイルを選択して、指定したツールチェーンを使用してコンテナー内でコードをビルド、実行、デバッグできます。

      関連ページ:

      ツールチェーン

      CLion の CMake、Makefile、compilation database プロジェクトの場合、ツールチェーンは、アプリケーションのビルドと実行に必要なすべてのツールのセットです。CMake 実行可能ファイル(CMake プロジェクト)、ビルドツール、C/C++ コンパイラー、デバッガーバイナリ、作業環境。CLion の使用を開始すると、デフォルトのツールチェーンがすでに使用可能になっています。開発で使用することはできますが、プロジェクトのニーズに合わせてツールのセットを調整することもで...

      Gateway を使用したリモート

      C/C++ 開発環境 CLion の使い方や高等テクニック満載の JetBrains 日本語公式ヘルプ。最新の英語版ヘルプ内容が随時反映されます。

      ローカルソースを使用したリモート

      このリモートモードを使用すると、SSH 経由で接続されたリモート Linux マシンを対象とする macOS、Linux、Windows デスクトップ上の CLion で作業できます。Raspberry Pi のようなシングルボードコンピューター上の組み込みシステムを含め、Linux ベースのターゲットを選択できます。また、プログラムはクラウドプラットフォーム上で起動することも、Docker コンテナー内などで起動することもできます。このモードでは、IDE インスタンスがローカルで実行され、ソースファ...

      Docker プラグインの統合

      Docker は、分離された再現可能な環境で実行可能ファイルをデプロイおよび実行するためのツールです。これは、たとえば、本番環境と同じ環境でコードをテストする場合に役立ちます。CLion は Docker 機能を統合し、Docker イメージの作成、Docker コンテナーの実行、Docker Compose アプリケーションの管理、パブリックおよびプライベート Docker レジストリの使用など、IDE から直接実行するための支援を提供します。Docker プラグインを有効にするこの機能は、デフ...

      CMake プロファイル

      CMake プロジェクトのビルドに必要な設定は CMake プロファイルに組み込まれています。これには、ツールチェーンとビルド型に加え、ジェネレーターや環境変数などの CMake オプションが含まれます。たとえば、異なるコンパイラーを使用したり、異なる設定でターゲットをビルドしたりするために、プロジェクトに複数のプロファイルを構成できます。プロファイル設定にアクセスする次のいずれかを実行して、CMake プロファイル設定を開きます。に移動します。を押してアクションの検索ダイアログを開き、CMake...

      Makefile プロジェクト

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