「インストール - CLion」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

 
(同じ利用者による、間の16版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
 
CLionは、C/C++向けのクロスプラットフォームIDEである。<br>
<br>
* コーディング支援
*: エディタは、コードの読み取りと記述を効果的に行うことができる。
*: スマート補完に入力すれば補完結果を絞り込み、パンくずリストでは範囲階層内で場所をトラッキングすることができる。
*: また、パラメータ名ヒントのお陰で、関数呼び出しに関する洞察も得られる。
*: シンボルの使用箇所をコンテキストに合わせて検索したり、名前を入力するだけでそのシンボルに移動することも可能である。
*: CLionでは、書式設定や命名規則等も含む様々なコーディングガイドラインに準じたコード検証も行うことができる。
*: <br>
* コード生成
*: 多数のボイラープレートコードを瞬時に生成する。
*: 関数のオーバーライドや実装には単純なショートカットが用意されており、コンストラクタ、デストラクタ、getter、setter、等値、リレーショナル、ストリーム出力演算子も生成できる。
*: ステートメントでコードブロックをラッピングしたり、使用箇所から宣言を生成することも可能である。
*: カスタムライブテンプレートを作成することにより、頻繁に使用するコードブロックをコードベース全体で再利用できるようになるため、開発にかかる時間を短縮して、一貫したスタイルを維持することができる。
*: <br>
* 安全なリファクタリング
*: シンボル名の変更、関数、変数、マクロのインライン化、階層内でのメンバの移動、関数シグネチャの変更、関数、変数、パラメータ、<code>typedef</code>の抽出等、
*: 使用する自動リファクタリングに関係なく、全コードへの適切な変更は、CLionが安全にプロパゲートする。
*: <br>
* クイックドキュメント
*: キャレットのあるコードをインスペクションすることにより、関数シグネチャの詳細、コメントの表示、Doxygen式ドキュメンテーションのプレビュー、明示的な型が不足するシンボルの推論型の確認、
*: 適切に書式設定された最終的なマクロの置換の確認まで、コードに関するあらゆる情報を知ることができる。
* 統合デバッガ
*: GDBまたはLLDBをバックエンドとして使用するCLionのデバッガを使用することにより、問題の調査と解決を難なく行うことができる。
*: ローカルプロセスへのアタッチ、リモートデバッグが可能である。
*: <br>
*: 組み込み開発では、CLionのOpenOCD、Embedded GDB Server構成により、オンチップデバッグが可能となる。
*: 組み込みデバイス用の分解ビュー、メモリビュー、ペリフィラルビューを活用すれば、さらに詳細な情報を得ることができる。
<br>
また、統合されたC/C++開発環境として、以下に示すような特徴もある。<br>
* プロジェクトモデル
*: CLionでは、プロジェクトモデルを使用して、コーディング支援、リファクタリング、コーディングスタイルの一貫性、その他のスマートアクションに関する情報をエディター内に表示する。
*: CMake、Makefile、Gradle、コンパイルデータベース等に対応している。
*: <br>
* リモートでのコラボレーション作業
*: ソースコードをローカルで編集した後、アプリケーションまたはユニットテストをローカル、リモート、オンチップで、ビルドおよび実行できる。
*: コラボレーション環境を向上させて、複数人とリアルタイムでCLionプロジェクトの作業を行うことができる。
*: <br>
* 必要なものを全て1箇所に集約
*: CLionには、VCS (SVN / Git / GitHub / Mercurial / Perforce)、ユニットテスト用のGoogle Test / Catch / Boost.Testフレームワーク、
*: Doxygen、データベースツール、Markdown等をサポートしており、開発タスクに欠かせないあらゆる機能が含まれている。
<br><br>
<br><br>


17行目: 57行目:
<br><br>
<br><br>


== PinePhone / Qtとの連携 ==
== Raspberry Pi / Qt 5との連携 ==
==== ツールチェーンの設定 ====
CLionを使用してRaspberry PiとQt 5のクロス開発を行う場合は、[[インストール_-_Qt5_Raspberry_Pi#CLion / Qt 5との連携]]のページを参照すること。<br>
[ファイル]メニューバー - [設定]を選択する。<br>
<br><br>
[設定]画面の左ペインにある[ビルド、実行、デプロイ] - [ツールチェーン]を選択する。<br>
 
[設定]画面の右ペインにある[+]アイコンを選択して、[システム]を選択する。<br>
== PinePhone / Qt 5との連携 ==
CLionを使用してPinePhoneとQt 5のクロス開発を行う場合は、[[インストール_-_Qt5_PinePhone#CLion / Qt 5との連携]]のページを参照すること。<br>
<br><br>
 
== MSP430との連携 ==
==== MSP430向けGCCツールチェーンのインストール ====
[https://www.ti.com/tool/MSP430-GCC-OPENSOURCE TIの公式Webサイト]にアクセスして、MSP430のGCCツールチェーンおよびMSP430の開発向けヘッダファイル群をダウンロードする。<br>
ダウンロードするファイルは2つである。<br>
* Mitto Systems GCC 64-bit Linux installer incl. support files
* Header and Support Files
<br>
<br>
* ツールチェーンの設定項目
ダウンロードしたファイルを解凍する。<br>
** [名前]
# MSP430 GCCツールチェーン
**: 任意の名前を入力する。
7z x msp430-gcc-full-linux-x64-installer-<バージョン>.7z
** [CMake:]
**: PinePhone向けQtライブラリのビルドに使用したCMakeファイルのパスを入力する。
# MSP430 開発向けヘッダファイル群
** [ビルドツール:]
unzip msp430-gcc-support-files-<バージョン>.zip
**: PinePhone向けQtライブラリのビルドに使用したNinjaファイルのパスを入力する。
mv msp430-gcc-support-files-<バージョン> <任意のディレクトリ>
** [C コンパイラー:]
**: PinePhone向けQtライブラリのビルドに使用したGCCファイルのパスを入力する。
**: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc
** [C++ コンパイラー:]
**: PinePhone向けQtライブラリのビルドに使用したG++ファイルのパスを入力する。
**: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-g++
** [デバッガー:]
**: GCCツールチェーンのGDBファイルのパスを入力する。
**: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gdb
<br>
<br>
[設定]画面の右ペイン下部にある[適用]ボタンを押下する。<br>
MSP430 GCCツールチェーンをインストールする。<br>
sudo ./msp430-gcc-full-linux-x64-installer-<バージョン>.run \
      --prefix <MSP430 GCCツールチェーンのインストールディレクトリ  例: /opt/TI/MSP430_GCC> \
      --mode xwindow --installer-language ja
# または
kdesu -c './msp430-gcc-full-linux-x64-installer-<バージョン>.run \
          --prefix <MSP430 GCCツールチェーンのインストールディレクトリ  例: /opt/TI/MSP430_GCC> \
          --mode xwindow --installer-language ja'
<br>
<br>
==== CMakeの設定 ====
/<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_consoleファイルに実行権限を付加する。<br>
[ファイル]メニューバー - [設定]を選択する。<br>
chmod +x /<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_console
[設定]画面の左ペインにある[ビルド、実行、デプロイ] - [CMake]を選択する。<br>
# または
[設定]画面の右ペインにある[+]アイコンを選択する。<br>
sudo chmod +x /<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_console
<br>
<br>
* CMakeの設定項目
==== MSP Flasherのインストール (ez-FETを使用する場合) ====
** [名前]
[https://www.ti.com/tool/ja-jp/MSP430-FLASHER TIの公式Webサイト]にアクセスして、MSP Flasherをダウンロードする。<br>
**: 任意の名前を入力する。
* Linux 64-Bit Installer for MSPFlasher
** [ビルドタイプ:]プルダウン
**: [Debug]または[Release]を選択する。
** [ツールチェーン:]プルダウン
**: 上記で設定したツールチェーン名を選択する。
** [ジェネレーター:]プルダウン
**: [デフォルトを使用する]を選択する。
**: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc
** [環境:]<br>[環境:]のテキストアイコンを選択して、[環境設定]画面を開く。<br>画面右上の[+]ボタンを押下して、各環境変数を設定する。
*** CMAKE_C_COMPILER
***: PinePhone向けQtライブラリのビルドに使用したGCCファイルのパスを入力する。
***: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc
*** CMAKE_CXX_COMPILER
***: PinePhone向けQtライブラリのビルドに使用したG++ファイルのパスを入力する。
***: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-g++
*** CMAKE_PREFIX_PATH
***: PinePhone向けQtライブラリのインストールディレクトリのパスを入力する。
***: 例: <PinePhone向けQtライブラリのインストールディレクトリ>
*** CMAKE_TOOLCHAIN_FILE
***: PinePhone向けQtライブラリのインストールディレクトリにあるビルド向けツールチェーンファイルのパスを入力する。
***: 例: /<PinePhone向けQtライブラリのインストールディレクトリ>/lib/cmake/Qt6/qt.toolchain.cmake
*** QT_QMAKE_EXECUTABLE
***: PinePhone向けQtライブラリのインストールディレクトリにあるqmakeファイルのパスを入力する。
***: 例: /<PinePhone向けQtライブラリのインストールディレクトリ>/bin/qmake-host
<br>
<br>
[設定]画面の右ペイン下部にある[適用]ボタンを押下する。<br>
ダウンロードしたファイルを解凍する。<br>
unzip MSPFlasher-<バージョン>-linux-x64-installer.zip
<br>
<br>
==== SSHの設定 ====
解凍したファイル (インストーラ) に実行権限を付加する。<br>
[ファイル]メニューバー - [設定]を選択する。<br>
chmod u+x MSPFlasher-<バージョン>-linux-x64-installer.run
[設定]画面の左ペインにある[ツール] - [SSH 構成]を選択する。<br>
[設定]画面の右ペインにある[+]アイコンを選択する。<br>
<br>
<br>
* SSH構成の設定項目
MSP Flasherをインストールする。<br>
** [ホスト:]
MSP Flasherのインストールディレクトリは、任意のディレクトリで構わない。<br>
**: PinePhoneのIPアドレスまたはホスト名を入力する。
./MSPFlasher-<バージョン>-linux-x64-installer.run
** [ユーザー名:]
**: PinePhoneのユーザ名を入力する。
** [認証タイプ:]プルダウン
**: [パスワード]または[キーペア]を選択する。
** [秘密鍵ファイル:] (キーペアを選択した場合)
**: 秘密鍵ファイルのパスを入力する。
** [パスフレーズ:] (キーペアを選択した場合、かつ、パスフレーズを設定した場合)
**: 秘密鍵のパスフレーズを入力する。
** [構成ファイル ~/.ssh/configの構文解析]チェックボックス
**: 任意
<br>
<br>
[接続テスト]ボタンを押下して、PinePhoneにSSH接続する。<br>
==== MSP Debugのインストール ====
MSP Debugのビルドに必要なライブラリをインストールする。<br>
# SUSE
sudo zypper install readline-devel libusb-1_0-devel libusb-compat-devel
<br>
<br>
[設定]画面の右ペイン右下にある[適用]ボタンを押下する。<br>
[https://github.com/dlbeer/mspdebug.git MSP Debug]のGithubにアクセスして、ソースコードをダウンロードする。<br>
git clone https://github.com/dlbeer/mspdebug.git
cd mspdebug
<br>
<br>
==== 各プロジェクトの設定 ====
MSP Debugをビルドおよびインストールする。<br>
CLionを起動して、[ファイル]メニューバー - [新規] - [プロジェクト...]を選択する。<br>
make PREFIX=<MSP Debugのインストールディレクトリ> -j $(nproc)
[新規プロジェクト]画面から、[Qt Console 実行可能ファイル]または[Qt Widgets 実行可能ファイル]を選択する。<br>
make PREFIX=<MSP Debugのインストールディレクトリ> install
<br>
<br>
新規プロジェクトの作成後、[実行]メニューバー - [実行構成の編集...]を選択する。<br>
==== MSP430向けGCCツールチェーンのアンインストール ====
[実行/デバッグ構成]画面が開くので、画面左上にある[+]ボタンを押下して、[リモート GDB サーバー]を選択する。<br>
/<MSP430向けGCCツールチェーンのインストールディレクトリ>/binディレクトリに移動する。<br>
画面左ペインに[リモート GDB サーバー]が追加される。<br>
cd /<MSP430向けGCCツールチェーンのインストールディレクトリ>/bin
画面左ペインに[リモート GDB サーバー]を選択して、各種設定を行う。<br>
<br>
<br>
* [ターゲット:]プルダウン
MSP430向けGCCツールチェーンをアンインストールする。<br>
*: プロジェクト名を選択する。
sudo ./uninstall
* [実行可能ファイル:]プルダウン
# または
*: プロジェクト名を選択する。
kdesu ./uninstall
* [GDB:]プルダウン
*: 上記のツールチェーンの作成セクションで設定したGDBを選択する。
* [資格情報:]プルダウン
*: 上記のSSHの設定セクションで設定したSSHを選択する。
* [実行可能ファイル...]ラジオボタン
*: 任意
* [アップロードパス:]
*: 実行可能バイナリが配置されるPinePhone上のディレクトリを入力する。
*: 例: /home/<PinePhoneのユーザ名>/CLion/Sample1/debug
* ['target remote' ...]
*: 自動的に入力される。
*: 例: <IPアドレスまたはホスト名>:1234
<br>
<br>
次に、[拡張 GDB サーバーオプション]項目を設定する。<br>
==== CLionの設定 ====
この設定は、PinePhoneにアップロードしたQtライブラリにおいて、デバッグまたは実行に関する設定を行う。<br>
===== CMakeツールチェーンファイルの作成 =====
* [作業ディレクトリ:]
vi /<MSP430プロジェクトのトップディレクトリ>/toolchain-msp430-gcc-ti.cmake
*: 何も入力しない。
* [環境変数:]<br>[環境変数:]項目の右にあるテキストアイコンを選択する。<br>[環境変数]画面が開くので、画面左上にある[+]ボタンを押下して各種設定を入力する。
** DISPLAY
**: :0
** QT_QPA_PLATFORMTHEME
**: Qt 6の場合 : qt6ct
**: Qt 5の場合 : qt5ct
** PATH
**: PinePhone上のQt6ライブラリをアップロードしたbinディレクトリのパスを入力する。
**: 例: /<Qt6ライブラリをアップロードしたディレクトリ>/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
** LD_LIBRARY_PATH
**: PinePhone上のQt6ライブラリをアップロードしたlibディレクトリのパスを入力する。
**: 例: /<Qt6ライブラリをアップロードしたディレクトリ>/lib:/<Qt6ライブラリをアップロードしたディレクトリ>/plugins/qmltooling
** QT_PLUGIN_PATH
**: /<Qt6ライブラリをアップロードしたディレクトリ>/plugins
** QT_QPA_PLATFORM_PLUGIN_PATH
**: /<Qt6ライブラリをアップロードしたディレクトリ>/plugins/platforms
** QML_IMPORT_PATH
**: /<Qt6ライブラリをアップロードしたディレクトリ>/qml
** QML2_IMPORT_PATH
**: /<Qt6ライブラリをアップロードしたディレクトリ>/qml
** QT_DEBUG_PLUGINS
**: 0または1を入力する。
** LANG
**: 日本語を設定する場合は、<code>ja_JP.UTF-8</code>と入力する。
<br>
<br>
また、[拡張 GDB サーバーオプション]項目の設定は、プロジェクトディレクトリ内の<u>.idea/runConfigurations/<プロジェクト名>.xml</u>ファイルに保存されている。<br>
<syntaxhighlight lang="cmake">
このファイルを直接編集することにより、上記の設定を行うこともできる。<br>
# /<MSP430プロジェクトのトップディレクトリ>/toolchain-msp430-gcc-ti.cmakeファイル
<br>
CLion上で上記の設定を行うには煩雑なため、ファイルを直接編集することを推奨する。<br>
include(CMakeForceCompiler)
  cd <プロジェクトディレクトリ>
  vi .idea/runConfigurations/<プロジェクト名>.xml
# ツールチェーン等のパス
<br>
SET(PLATFORM_PACKAGES_PATH    "<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス  例: /opt/TI/MSP430_GCC>")
  <syntaxhighlight lang="xml">
list(APPEND CMAKE_MODULE_PATH "<CLionのMSP430プロジェクトのトップディレクトリ  例: /home/user/MSP430Project>")
  <!-- .idea/runConfigurations/<プロジェクト名>.xml -->
list(APPEND CMAKE_MODULE_PATH "${PLATFORM_PACKAGES_PATH}/lib/cmake")
list(APPEND CMAKE_PREFIX_PATH "${PLATFORM_PACKAGES_PATH}/lib/cmake")
INCLUDE_DIRECTORIES("${PLATFORM_PACKAGES_PATH}/include ${INCLUDE_DIRECTORIES}")
# ターゲットデバイス名
SET(SUPPORTED_DEVICES "<ターゲットデバイス名  例: msp430g2553>" CACHE STRING "Supported Target Devices")
set(CMAKE_SYSTEM_NAME msp430-gcc)
# コンパイラの設定
SET(MSP430_TI_COMPILER_FOLDER  ${PLATFORM_PACKAGES_PATH})
SET(MSP430_TI_BIN_FOLDER        ${MSP430_TI_COMPILER_FOLDER}/bin)
SET(MSP430_TI_INCLUDE_FOLDER    ${MSP430_TI_COMPILER_FOLDER}/include)
SET(TOOLCHAIN_PREFIX            msp430-elf)
SET(TOOLCHAIN_BIN_PATH          ${MSP430_TI_BIN_FOLDER})
  SET(FLASHER_PATH                <上記のセクションでインストールしたMSP Flasherのパス  例: /home/user/MSPFlasher>)
  SET(MSPDEBUG_PATH              <上記のセクションでインストールしたMSP Debugのパス    例: /home/user/MSP_Debug/bin>)
SET(MSPDEBUG_DEVICE            ezfet)
INCLUDE_DIRECTORIES(${MSP430_TI_INCLUDE_FOLDER} ${INCLUDE_DIRECTORIES})
LINK_DIRECTORIES(${MSP430_TI_INCLUDE_FOLDER} ${LINK_DIRECTORIES})
FIND_PROGRAM(MSP430_CC      ${TOOLCHAIN_PREFIX}-gcc    PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_CXX    ${TOOLCHAIN_PREFIX}-g++    PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_AR      ${TOOLCHAIN_PREFIX}-ar      PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_AS      ${TOOLCHAIN_PREFIX}-as      PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_OBJDUMP ${TOOLCHAIN_PREFIX}-objdump PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_OBJCOPY ${TOOLCHAIN_PREFIX}-objcopy PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_SIZE    ${TOOLCHAIN_PREFIX}-size    PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSP430_NM      ${TOOLCHAIN_PREFIX}-nm      PATHS ${TOOLCHAIN_BIN_PATH})
FIND_PROGRAM(MSPDEBUG      mspdebug                    PATHS ${MSPDEBUG_PATH})
FIND_PROGRAM(MSP430_FLASHER MSP430Flasher              PATHS ${FLASHER_PATH})
set(CMAKE_C_COMPILER    ${MSP430_CC} CACHE STRING "C Compiler")
set(CMAKE_CXX_COMPILER  ${MSP430_CXX} CACHE STRING "C++ Compiler")
set(AS    ${MSP430_AS} CACHE STRING "AS Binary")
set(AR    ${MSP430_AR} CACHE STRING "AR Binary")
set(OBJCOPY ${MSP430_OBJCOPY} CACHE STRING "OBJCOPY Binary")
set(OBJDUMP ${MSP430_OBJDUMP} CACHE STRING "OBJDUMP Binary")
set(SIZE    ${MSP430_SIZE} CACHE STRING "SIZE Binary")
IF(NOT CMAKE_BUILD_TYPE)
    SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
      FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
set(MSPGCC_OPT_LEVEL    "g" CACHE STRING "MSPGCC OPT LEVEL")
set(MSPGCC_WARN_PROFILE "-Wall -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wunused"
            CACHE STRING "MSPGCC WARNINGS")
set(MSPGCC_DISABLED_BUILTINS "-fno-builtin-printf -fno-builtin-sprintf"
                              CACHE STRING "MSPGCC Disabled Builtins")
set(MSPGCC_OPTIONS "-gdwarf-3 -fdata-sections -ffunction-sections -fverbose-asm ${MSPGCC_DISABLED_BUILTINS}"
                    CACHE STRING "MSPGCC OPTIONS")
set(CMAKE_C_FLAGS  "${MSPGCC_WARN_PROFILE} ${MSPGCC_OPTIONS} -O${MSPGCC_OPT_LEVEL}  -DGCC_MSP430" CACHE STRING "C Flags")
  set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--gc-sections -Wl,--print-gc-sections"
                              CACHE STRING "Linker Flags")
  set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections"
                            CACHE STRING "Linker Flags")
   
   
  <component name="ProjectRunConfigurationManager">
  # リンカコマンドの設定
  <configuration ...略>
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_C_COMPILER> ${CMAKE_EXE_LINKER_FLAGS} <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
    <envs>
                              CACHE STRING "C++ Executable Link Command")
      <env name="DISPLAY" value=":0" />
      <env name="LANG" value="ja_JP.UTF-8" />
      <env name="QML2_IMPORT_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/qml" />
      <env name="QML_IMPORT_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/qml" />
      <env name="QT_DEBUG_PLUGINS" value="0" />
      <env name="QT_PLUGIN_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/plugins" />
      <env name="QT_QPA_PLATFORM_PLUGIN_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/plugins/platforms" />
      <env name="QT_QPA_PLATFORMTHEME" value="qt6ct" />
      <env name="LD_LIBRARY_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/lib:/<Qt6ライブラリをアップロードしたディレクトリ>/plugins/qmltooling" />
      <env name="PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" />
    </envs>
   
   
    <!-- ...略 -->
set(CMAKE_C_LINK_EXECUTABLE ${CMAKE_CXX_LINK_EXECUTABLE} CACHE STRING "C Executable Link Command")
   
   
  </configuration>
  set(PROGBIN    ${MSP430_FLASHER} CACHE STRING "Programmer Application")
  </component>
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
===== リンカコマンドファイルのコピー =====
ターゲットデバイスのリンカコマンドファイルを、プロジェクトのトップディレクトリにコピーする。<br>
cp /<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス>/include/<ターゲットデバイス名>.ld \
    <MSP430プロジェクトのトップディレクトリ>
# 例: MSP430G2553を使用する場合
cp /<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス>/include/msp430g2553.ld \
    <MSP430プロジェクトのトップディレクトリ>
<br>
===== プロジェクトの設定 =====
# プロジェクトを開いて、[ファイル]メニューバー - [設定]を選択する。
# [設定]画面の左ペインから、[ビルド、実行、デプロイ] - [CMake]を選択する。
# [設定]画面の右ペインから、[+]アイコンを選択して、CMakeの設定を行う。
#* [名前]
#*: 任意の名前
#* [ビルドタイプ]プルダウン
#*: Debug
#* [ツールチェーン]プルダウン
#*: MSP430ツールチェーンを選択する。
#* [ジェネレーター]
#*: [デフォルトを使用する]
#* [CMakeオプション]
#*: <code>-DCMAKE_TOOLCHAIN_FILE=<上記のセクションで作成したCMakeツールチェーンファイルのパス></code>
# [OK]ボタンを押下する。
<br><br>


==== GDBの設定 ====
== ACPを使用したOpenCodeとの連携 ==
プロジェクトにデバッグのためのより多くの設定が必要な場合、デバッガの初期化ファイル (GDBの場合は.gdbinit、LLDBの場合は.lldbinit) をプロジェクトディレクトリ直下に作成する。<br>
ACP (Agent Client Protocol) を使用すると、CLionのAI ChatからOpenCodeをコーディングエージェントとして利用できる。<br>
このファイルは、他のプロジェクトと一緒にVCSで共有することもできる。<br>
<br>
<br>
一般的に、GDB / LLDBは起動時に初期化ファイルを一定の順序で読み込む。<br>
ACPは、コードエディタとAIコーディングエージェント間の通信を標準化するオープンなプロトコルであり、LSP (Language Server Protocol) が言語サーバ統合を標準化したのと同じ役割を、エージェント向けに果たす。<br>
まず、デバッガはユーザのホームディレクトリにある初期化ファイルを探して、次に、現在のプロジェクトディレクトリ直下にある初期化ファイルを探す。<br>
CLionはACP互換エージェントをサブプロセスとして起動して、JSON-RPC over stdioで通信する。<br>
<br>
<br>
ただし、デフォルトの設定では、セキュリティ上の理由から、プロジェクト固有の初期化ファイルからのコマンドは実行されない。<br>
==== ACPの仕組み ====
そのため、ホームディレクトリの初期化ファイルである<u>~/.gdbinit</u>ファイルまたは<u>~/.lldbinit</u>ファイルを、以下に示すように編集する。<br>
ACP連携時の全体構成は次のとおりである。<br>
vi ~/.gdbinit  または  vi ~/.lldbinit
<br>
<br>
  <syntaxhighlight lang="sh">
* CLion (AI Assistant)
  # ~/.gdbinitファイル  または ~/.lldbinitファイル
*: AI Chatからエージェントを選択し、プロンプトを送信する。
*: ACP互換エージェントをサブプロセスとして起動する。
* 通信経路 (JSON-RPC / stdio)
*: CLionとエージェントの間で、JSON-RPCメッセージを標準入力と標準出力でやり取りする。
*: ローカル実行が基本であり、ネットワークポートの開放は不要である。
* OpenCode (<code>opencode acp</code> コマンド)
*: OpenCodeの <code>acp</code> サブコマンドが、ACP互換サーバとしてstdio上で待ち受ける。
*: 設定済みのツール、MCPサーバ、<u>AGENTS.md</u> ファイルのルール等を通常どおり利用する。
<br>
JetBrains公式では、ACP互換エージェントはJetBrains AIサービスのサブスクリプション無しでも接続・利用可能とされている。<br>
ただし、Windows Subsystem for Linux (WSL) 環境では、ACP互換エージェントはサポート対象外である。<br>
<br>
==== 前提条件 ====
* OpenCodeがインストール済みであること。
*: インストール手順は、[[インストール - OpenCode]]のページを参照すること。
* OpenCodeのプロバイダ認証が完了していること。
* CLionでAI Assistantが利用可能であること。
* WSL環境ではないこと。
<br>
==== OpenCode側の準備 ====
ACP設定の前に、OpenCode側の初期化と認証を済ませておく。<br>
これは、JetBrains側の設定ファイルにAPIキーを直接記述しなくて済むようにするためである。<br>
<br>
===== プロバイダの認証 =====
OpenCodeのプロバイダ認証には、CLIとTUIの2つの方法がある。<br>
どちらの方法でも、認証情報は <u>~/.local/share/opencode/auth.json</u> ファイルに保存される。<br>
<br>
* <code>opencode auth login</code> コマンド (CLI)
*: ターミナルから直接プロバイダを選択して認証する。
* <code>/connect</code> コマンド (TUI)
*: OpenCodeを起動して、TUI内で <code>/connect</code> コマンドを実行してプロバイダを選択し、APIキーを入力する。
<br>
CLIで認証する場合は、次のコマンドを実行する。<br>
<br>
  opencode auth login
<br>
TUIで認証する場合は、OpenCodeを起動後、TUI内で以下に示すコマンドを実行する。<br>
<br>
/connect
<br>
設定済みのプロバイダを確認する。<br>
<br>
opencode auth list
<br>
利用可能なモデル一覧を更新して確認する。<br>
<br>
opencode models --refresh
<br>
===== プロジェクト設定ファイルの準備 =====
OpenCodeは、プロジェクトルートの <u>opencode.json / opencode.jsonc</u> ファイルを読み込み、グローバル設定よりも優先する。<br>
<br>
OpenCodeは起動時にカレントディレクトリから設定ファイルを探して、Gitルート方向へ探索する。<br>
プロジェクト固有のモデル指定やMCPサーバ設定は、このファイルに記述する。<br>
<br>
* <u>opencode.json / opencode.jsonc</u>
*: <syntaxhighlight lang="json">
  {
    "$schema": "https://opencode.ai/config.json",
    "model": "opencode-go/glm-5.2",
    "instructions": [
      "AGENTS.md"
    ]
}
</syntaxhighlight>
<br>
作業ルールや設計方針は、プロジェクトルートの <u>AGENTS.md</u> ファイルに記述する。<br>
OpenCodeはこのファイルを読み込み、プロジェクト専用のルールとして適用する。<br>
<br>
<u>AGENTS.md</u> ファイルは手動で作成するほか、OpenCode TUIの <u>/init</u> コマンドで生成できる。<br>
OpenCodeを起動して、TUI内で <code>/init</code> コマンドを実行すると、OpenCodeがプロジェクト構成を解析して、<u>AGENTS.md</u> ファイルのひな形を作成または更新する。<br>
<br>
==== JetBrains側のACP設定 ====
===== ~/.jetbrains/acp.jsonの作成 =====
JetBrains系IDEのACP設定は、ユーザ単位のファイル <u>~/.jetbrains/acp.json</u> ファイルで管理される。<br>
<br>
このファイルは、次のいずれかの経路から作成・編集できる。<br>
<br>
* AI Chatツールウィンドウ右上のメニュー - [Add Custom Agent]
*: ファイルが存在しない場合は新規作成され、編集用に開かれる。
* [設定] - [ツール] - [AI Assistant] - [Agents]
*: Agents設定画面からエージェントの追加やMCP設定の切り替えを行う。
<br>
手動で作成する場合は、以下に示す通り、ディレクトリとファイルを用意する。<br>
<br>
  mkdir -p ~/.jetbrains
<br>
===== OpenCode実行ファイルの絶対パスの確認 =====
<code>command</code> コマンドには、OpenCode実行ファイルの絶対パスを指定する必要がある。<br>
<br>
JetBrains公式のトラブルシューティングでも、エージェント起動失敗時はフルパスの使用が推奨されている。<br>
<br>
command -v opencode
readlink -f "$(command -v opencode)"
   
   
  set auto-load safe-path /
  # 出力例
   
/home/<ユーザ名>/.opencode/bin/opencode
# または
<br>
===== acp.jsonの記述 =====
set auto-load local-gdbinit on
確認した絶対パスを <code>command</code> キーに設定する。<br>
  add-auto-load-safe-path /
<code>args</code> キーには <code>acp</code> を指定し、OpenCodeをACPサーバとして起動する。<br>
<br>
* <u>~/.jetbrains/acp.json</u>
*: <syntaxhighlight lang="json">
  {
    "default_mcp_settings": {
      "use_idea_mcp": true,
      "use_custom_mcp": true
    },
    "agent_servers": {
      "OpenCode": {
          "command": "/home/<ユーザ名>/.opencode/bin/opencode",
          "args": [
            "acp"
          ]
      }
    }
  }
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
次に、プロジェクトディレクトリの直下に.gdbinitファイルを作成する。<br>
下表に、各設定項目の意味を示す。<br>
cd <プロジェクトディレクトリ>
vi .gdbinit  または  vi .lldbinit
<br>
<br>
  <syntaxhighlight lang="sh">
<center>
  # /<プロジェクトディレクトリ>/.gdbinitファイル  または  /<プロジェクトディレクトリ>/.lldbinitファイル
{| class="wikitable"
|+ acp.jsonの設定項目
  set sysroot <PinePhoneのシステムルートディレクトリ>
! 項目 !! 配置 !! 説明
|-
| <code>default_mcp_settings</code> || 最上位 || 全ローカルエージェントに適用される既定のMCP設定<br><code>use_idea_mcp</code> と <code>use_custom_mcp</code> を配下に持つ。
|-
| <code>use_custom_mcp</code> || <code>default_mcp_settings</code> 配下 || ユーザ設定済みのMCPサーバをエージェントへ公開するかどうか。<br>既定値は <u>true</u>
|-
| <code>use_idea_mcp</code> || <code>default_mcp_settings</code> 配下 || JetBrains内蔵のIntelliJ MCP Serverをエージェントへ公開するかどうか。<br>既定値は <u>false</u>
|-
| <code>agent_servers</code> || 最上位 || 登録するエージェントの最上位オブジェクト<br>各キーがAI Chatに表示されるエージェント名になる。
|-
| <code>command</code> || 各エージェント配下 || エージェントの実行ファイルパス<br>AI Assistantはこのファイルをサブプロセスとして起動する。<br><br><u>※絶対パスを指定すること。</u>
|-
| <code>args</code> || 各エージェント配下 || 起動時に渡すコマンドライン引数の配列<br>OpenCodeでは <code>acp</code> を指定する。
|-
| <code>env</code> (省略可能) || 各エージェント配下 || エージェントプロセスに設定する環境変数<br>プロキシ等が必要な場合に使用する。
|}
</center>
<br>
===== 環境変数が必要な場合の記述 =====
プロキシ環境等で環境変数が必要な場合は、<code>env</code> キーに追加する。<br>
<br>
<u>APIキーは <code>env</code> キーに直接記述せず、原則として <code>opencode auth login</code> コマンドで設定した認証情報を使用すること。</u><br>
<br>
  <syntaxhighlight lang="json">
  {
    "agent_servers": {
      "OpenCode": {
          "command": "/home/<ユーザ名>/.opencode/bin/opencode",
          "args": [
            "acp"
          ],
          "env": {
            "HTTP_PROXY": "http://proxy.example.local:8080",
            "HTTPS_PROXY": "http://proxy.example.local:8080"
          }
      }
    }
  }
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
CLionを起動して、任意のプロジェクトを開く。<br>
==== CLionでの有効化と動作確認 ====
CLionのメイン画面左にあるプロジェクトに.gdbinitファイル、または、.lldbinitファイルが追加されているかどうかを確認する。<br>
===== 設定の反映 =====
<u>acp.json</u> ファイルを作成または編集した直後から、通常はAI Chatでエージェントを選択できる。<br>
エージェントがAI Chatに表示されない場合は、<u>acp.json</u> ファイルのJSON形式を確認したうえでCLionを再起動すること。<br>
<br>
ファイル形式の確認とIDE再起動は、JetBrains公式のトラブルシューティング手順にも挙げられている。<br>
<br>
===== エージェントの選択 =====
CLionでAI Chatツールウィンドウを開いて、チャットモードのエージェントセレクタから[OpenCode]を選択する。<br>
<br>
追加したエージェントは、エージェントアイコン付きでリストに表示される。<br>
<br>
===== 動作確認 =====
まず読み取り中心の指示で接続を確認する。<br>
<br>
このプロジェクトのCMakeビルド構成と主要モジュールを調査し、ビルド方法とテスト方法を要約してください。
ファイルは変更しないでください。
<br>
エージェントが応答して、ファイル参照や検索を実行できれば、ACP連携は成功である。<br>
<br>
その後、実装や修正の指示を出して運用に進めればよい。<br>
<br>
===== OpenCode単体での事前確認 =====
JetBrains側でトラブルシュートする前に、ターミナルで <code>opencode acp</code> コマンドが起動するか確認できる。<br>
正常な場合は、プロセスがJSON-RPCメッセージを待機する状態で停止する。<br>
<br>
/home/<ユーザ名>/.opencode/bin/opencode acp
<br>
==== プロジェクト単位の設定 ====
ACPエージェントの登録自体は、JetBrainsユーザ単位 (<u>~/.jetbrains/acp.json</u>) でのみ行う。<br>
<br>
JetBrains公式仕様では、プロジェクトルートや <code>.idea</code> ディレクトリ配下にACP設定を置いて、プロジェクト単位で有効化することはサポートされていない。<br>
プロジェクトごとにACPエージェントを切り替えたい要件はYouTrackで要望が挙がっている機能であり、現時点では未対応である。<br>
<br>
一方、OpenCode側の挙動はプロジェクト単位で制御できる。<br>
推奨される構成を次に示す。<br>
<br>
* <u>~/.jetbrains/acp.json</u>
*: JetBrains全体でOpenCodeのACPエージェントを1つ登録する。
* <u>&lt;プロジェクトルート&gt;/opencode.json</u>
*: そのプロジェクト専用のOpenCode設定を記述する。モデル、MCPサーバ、ツールの許可等を指定できる。
* <u>&lt;プロジェクトルート&gt;/AGENTS.md</u>
*: そのプロジェクト専用の作業ルール、設計方針、禁止事項を記述する。
<br>
この分離により、ACPエージェントの登録はユーザ単位のまま、OpenCodeの挙動だけをプロジェクトごとに切り替えられる。<br>
<br>
==== トラブルシューティング ====
===== OpenCodeエージェントがAI Chatに表示されない =====
* 原因
*: <u>acp.json</u> ファイルの形式誤り、または設定変更がIDEに反映されていない。
*: <br>
* 解決方法
** <u>acp.json</u> ファイルが正しいJSON形式であることを確認する。
** CLionを再起動して設定を反映し直す。
<br>
===== エージェントの起動に失敗する =====
* 原因
*: OpenCodeの絶対パス誤り、OpenCode側の認証未完了、実行ファイルの異常
*: <br>
* 解決方法
** OpenCode実行ファイルの絶対パスが指定されていることを確認する。
** ターミナルで <code>opencode</code> コマンドを手動実行して、OpenCodeが起動するか確認する。
** <code>opencode auth list</code> コマンドを実行して、プロバイダ認証が完了しているか確認する。
<br>
===== ACPログの取得 =====
AI Chatツールウィンドウ右上のメニューから[Get ACP Logs]を選択すると、エージェントのログをアーカイブ形式で取得できる。<br>
<br>
より詳細なログが必要な場合は、Registryの <code>llm.agent.extended.logging</code> キーを有効化する。<br>
ただし、この詳細ログにはチャット内容等の機密情報が含まれる可能性があるため、共有前には内容を確認すること。<br>
<br>
Registryの有効化手順は次のとおりである。<br>
<br>
# [Shift]キーを2回押下して、Search Everywhereを開く。
# <u>Registry</u> と入力して、[Enter]キーを押下する。
# [Ctrl] + [F]キーを押下して、<u>llm.agent.extended.logging</u> を検索して、有効化する。
# CLionを再起動する。
<br>
==== セキュリティと運用上の注意 ====
* APIキーを <u>acp.json</u> ファイルに平文で記述しないこと。
*: プロバイダ認証は <code>opencode auth login</code> コマンドで行い、保存された認証情報を再利用する。
* <code>llm.agent.extended.logging</code> 有効時のログの取り扱いに注意すること
*: チャット内容やファイル内容が含まれる可能性がある。
*: 共有時には事前に機密情報を取り除くこと。
* WSL環境ではACP互換エージェントは動作対象外である。
*: ネイティブLinux環境でCLionとOpenCodeを動かすこと。
* <code>command</code> コマンドには絶対パスを使用すること。
*: 相対パスやシェルのエイリアスは、JetBrainsのサブプロセス起動では解決されない場合がある。
* MCPサーバの公開範囲を意識すること
*: <code>use_idea_mcp</code> キー および <code>use_custom_mcp</code> キーで、エージェントへ公開するMCPサーバを制御できる。
<br>
==== 関連情報 ====
* [https://www.jetbrains.com/help/ai-assistant/acp.html JetBrains公式 ACP ドキュメント]
* [https://opencode.ai/docs/acp/ OpenCode公式 ACP Support]
* [https://opencode.ai/docs/cli/ OpenCode公式 CLI]
* [https://opencode.ai/docs/config/ OpenCode公式 Config]
* [https://agentclientprotocol.com/ Agent Client Protocol 仕様]
* [[インストール - OpenCode]]
<br><br>
<br><br>


{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,CLion,JetBrains,IDE,OpenCode,ACP,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - MochiuWiki: CLion (C/C++ IDE) のインストール手順、MSP430/Raspberry Pi/PinePhone との連携、ACPを用いたOpenCode連携設定 | This page is {{PAGENAME}} in MochiuWiki - installation guide for CLion IDE, cross-development with MSP430/Raspberry Pi/PinePhone, and ACP-based OpenCode integration
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:C]][[カテゴリ:C++]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:C]][[カテゴリ:C++]][[カテゴリ:Qt]][[カテゴリ:MSP430]]

2026年7月13日 (月) 03:30時点における最新版

概要

CLionは、C/C++向けのクロスプラットフォームIDEである。

  • コーディング支援
    エディタは、コードの読み取りと記述を効果的に行うことができる。
    スマート補完に入力すれば補完結果を絞り込み、パンくずリストでは範囲階層内で場所をトラッキングすることができる。
    また、パラメータ名ヒントのお陰で、関数呼び出しに関する洞察も得られる。
    シンボルの使用箇所をコンテキストに合わせて検索したり、名前を入力するだけでそのシンボルに移動することも可能である。
    CLionでは、書式設定や命名規則等も含む様々なコーディングガイドラインに準じたコード検証も行うことができる。

  • コード生成
    多数のボイラープレートコードを瞬時に生成する。
    関数のオーバーライドや実装には単純なショートカットが用意されており、コンストラクタ、デストラクタ、getter、setter、等値、リレーショナル、ストリーム出力演算子も生成できる。
    ステートメントでコードブロックをラッピングしたり、使用箇所から宣言を生成することも可能である。
    カスタムライブテンプレートを作成することにより、頻繁に使用するコードブロックをコードベース全体で再利用できるようになるため、開発にかかる時間を短縮して、一貫したスタイルを維持することができる。

  • 安全なリファクタリング
    シンボル名の変更、関数、変数、マクロのインライン化、階層内でのメンバの移動、関数シグネチャの変更、関数、変数、パラメータ、typedefの抽出等、
    使用する自動リファクタリングに関係なく、全コードへの適切な変更は、CLionが安全にプロパゲートする。

  • クイックドキュメント
    キャレットのあるコードをインスペクションすることにより、関数シグネチャの詳細、コメントの表示、Doxygen式ドキュメンテーションのプレビュー、明示的な型が不足するシンボルの推論型の確認、
    適切に書式設定された最終的なマクロの置換の確認まで、コードに関するあらゆる情報を知ることができる。
  • 統合デバッガ
    GDBまたはLLDBをバックエンドとして使用するCLionのデバッガを使用することにより、問題の調査と解決を難なく行うことができる。
    ローカルプロセスへのアタッチ、リモートデバッグが可能である。

    組み込み開発では、CLionのOpenOCD、Embedded GDB Server構成により、オンチップデバッグが可能となる。
    組み込みデバイス用の分解ビュー、メモリビュー、ペリフィラルビューを活用すれば、さらに詳細な情報を得ることができる。


また、統合されたC/C++開発環境として、以下に示すような特徴もある。

  • プロジェクトモデル
    CLionでは、プロジェクトモデルを使用して、コーディング支援、リファクタリング、コーディングスタイルの一貫性、その他のスマートアクションに関する情報をエディター内に表示する。
    CMake、Makefile、Gradle、コンパイルデータベース等に対応している。

  • リモートでのコラボレーション作業
    ソースコードをローカルで編集した後、アプリケーションまたはユニットテストをローカル、リモート、オンチップで、ビルドおよび実行できる。
    コラボレーション環境を向上させて、複数人とリアルタイムでCLionプロジェクトの作業を行うことができる。

  • 必要なものを全て1箇所に集約
    CLionには、VCS (SVN / Git / GitHub / Mercurial / Perforce)、ユニットテスト用のGoogle Test / Catch / Boost.Testフレームワーク、
    Doxygen、データベースツール、Markdown等をサポートしており、開発タスクに欠かせないあらゆる機能が含まれている。



CLionのインストール

CLionの公式Webサイトにアクセスして、CLionをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf CLion-<バージョン>.tar.gz
mv CLion-<バージョン> CLion


必要ならば、CLionを任意のインストールディレクトリに配置する。

mv CLion <任意のインストールディレクトリ>


CLionのデスクトップエントリファイルを作成する。
CLionを起動して、[ツール]メニューバー - [デスクトップエントリの作成]を選択する。
~/.local/share/applicationsディレクトリにCLionのデスクトップエントリファイルが作成される。


Raspberry Pi / Qt 5との連携

CLionを使用してRaspberry PiとQt 5のクロス開発を行う場合は、インストール_-_Qt5_Raspberry_Pi#CLion / Qt 5との連携のページを参照すること。


PinePhone / Qt 5との連携

CLionを使用してPinePhoneとQt 5のクロス開発を行う場合は、インストール_-_Qt5_PinePhone#CLion / Qt 5との連携のページを参照すること。


MSP430との連携

MSP430向けGCCツールチェーンのインストール

TIの公式Webサイトにアクセスして、MSP430のGCCツールチェーンおよびMSP430の開発向けヘッダファイル群をダウンロードする。
ダウンロードするファイルは2つである。

  • Mitto Systems GCC 64-bit Linux installer incl. support files
  • Header and Support Files


ダウンロードしたファイルを解凍する。

# MSP430 GCCツールチェーン
7z x msp430-gcc-full-linux-x64-installer-<バージョン>.7z

# MSP430 開発向けヘッダファイル群
unzip msp430-gcc-support-files-<バージョン>.zip
mv msp430-gcc-support-files-<バージョン> <任意のディレクトリ>


MSP430 GCCツールチェーンをインストールする。

sudo ./msp430-gcc-full-linux-x64-installer-<バージョン>.run \
     --prefix <MSP430 GCCツールチェーンのインストールディレクトリ  例: /opt/TI/MSP430_GCC> \
     --mode xwindow --installer-language ja
# または
kdesu -c './msp430-gcc-full-linux-x64-installer-<バージョン>.run \
          --prefix <MSP430 GCCツールチェーンのインストールディレクトリ  例: /opt/TI/MSP430_GCC> \
          --mode xwindow --installer-language ja'


/<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_consoleファイルに実行権限を付加する。

chmod +x /<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_console
# または
sudo chmod +x /<MSP430 GCCツールチェーンのインストールディレクトリ>/bin/gdb_agent_console


MSP Flasherのインストール (ez-FETを使用する場合)

TIの公式Webサイトにアクセスして、MSP Flasherをダウンロードする。

  • Linux 64-Bit Installer for MSPFlasher


ダウンロードしたファイルを解凍する。

unzip MSPFlasher-<バージョン>-linux-x64-installer.zip


解凍したファイル (インストーラ) に実行権限を付加する。

chmod u+x MSPFlasher-<バージョン>-linux-x64-installer.run


MSP Flasherをインストールする。
MSP Flasherのインストールディレクトリは、任意のディレクトリで構わない。

./MSPFlasher-<バージョン>-linux-x64-installer.run


MSP Debugのインストール

MSP Debugのビルドに必要なライブラリをインストールする。

# SUSE
sudo zypper install readline-devel libusb-1_0-devel libusb-compat-devel


MSP DebugのGithubにアクセスして、ソースコードをダウンロードする。

git clone https://github.com/dlbeer/mspdebug.git
cd mspdebug


MSP Debugをビルドおよびインストールする。

make PREFIX=<MSP Debugのインストールディレクトリ> -j $(nproc)
make PREFIX=<MSP Debugのインストールディレクトリ> install


MSP430向けGCCツールチェーンのアンインストール

/<MSP430向けGCCツールチェーンのインストールディレクトリ>/binディレクトリに移動する。

cd /<MSP430向けGCCツールチェーンのインストールディレクトリ>/bin


MSP430向けGCCツールチェーンをアンインストールする。

sudo ./uninstall
# または
kdesu ./uninstall


CLionの設定

CMakeツールチェーンファイルの作成
vi /<MSP430プロジェクトのトップディレクトリ>/toolchain-msp430-gcc-ti.cmake


 # /<MSP430プロジェクトのトップディレクトリ>/toolchain-msp430-gcc-ti.cmakeファイル
 
 include(CMakeForceCompiler)
 
 # ツールチェーン等のパス
 SET(PLATFORM_PACKAGES_PATH    "<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス  例: /opt/TI/MSP430_GCC>")
 list(APPEND CMAKE_MODULE_PATH "<CLionのMSP430プロジェクトのトップディレクトリ  例: /home/user/MSP430Project>")
 list(APPEND CMAKE_MODULE_PATH "${PLATFORM_PACKAGES_PATH}/lib/cmake")
 list(APPEND CMAKE_PREFIX_PATH "${PLATFORM_PACKAGES_PATH}/lib/cmake")
 INCLUDE_DIRECTORIES("${PLATFORM_PACKAGES_PATH}/include ${INCLUDE_DIRECTORIES}")
 
 # ターゲットデバイス名
 SET(SUPPORTED_DEVICES "<ターゲットデバイス名  例: msp430g2553>" CACHE STRING "Supported Target Devices")
 
 set(CMAKE_SYSTEM_NAME msp430-gcc)
 
 # コンパイラの設定
 SET(MSP430_TI_COMPILER_FOLDER   ${PLATFORM_PACKAGES_PATH})
 SET(MSP430_TI_BIN_FOLDER        ${MSP430_TI_COMPILER_FOLDER}/bin)
 SET(MSP430_TI_INCLUDE_FOLDER    ${MSP430_TI_COMPILER_FOLDER}/include)
 SET(TOOLCHAIN_PREFIX            msp430-elf)
 SET(TOOLCHAIN_BIN_PATH          ${MSP430_TI_BIN_FOLDER})
 SET(FLASHER_PATH                <上記のセクションでインストールしたMSP Flasherのパス  例: /home/user/MSPFlasher>)
 SET(MSPDEBUG_PATH               <上記のセクションでインストールしたMSP Debugのパス    例: /home/user/MSP_Debug/bin>)
 SET(MSPDEBUG_DEVICE             ezfet)
 
 INCLUDE_DIRECTORIES(${MSP430_TI_INCLUDE_FOLDER} ${INCLUDE_DIRECTORIES})
 
 LINK_DIRECTORIES(${MSP430_TI_INCLUDE_FOLDER} ${LINK_DIRECTORIES})
 
 FIND_PROGRAM(MSP430_CC      ${TOOLCHAIN_PREFIX}-gcc     PATHS ${TOOLCHAIN_BIN_PATH})
 FIND_PROGRAM(MSP430_CXX     ${TOOLCHAIN_PREFIX}-g++     PATHS ${TOOLCHAIN_BIN_PATH})
 FIND_PROGRAM(MSP430_AR      ${TOOLCHAIN_PREFIX}-ar      PATHS ${TOOLCHAIN_BIN_PATH})
 FIND_PROGRAM(MSP430_AS      ${TOOLCHAIN_PREFIX}-as      PATHS ${TOOLCHAIN_BIN_PATH})
 FIND_PROGRAM(MSP430_OBJDUMP ${TOOLCHAIN_PREFIX}-objdump PATHS ${TOOLCHAIN_BIN_PATH})
 FIND_PROGRAM(MSP430_OBJCOPY ${TOOLCHAIN_PREFIX}-objcopy PATHS ${TOOLCHAIN_BIN_PATH})
 FIND_PROGRAM(MSP430_SIZE    ${TOOLCHAIN_PREFIX}-size    PATHS ${TOOLCHAIN_BIN_PATH})
 FIND_PROGRAM(MSP430_NM      ${TOOLCHAIN_PREFIX}-nm      PATHS ${TOOLCHAIN_BIN_PATH})
 FIND_PROGRAM(MSPDEBUG       mspdebug                    PATHS ${MSPDEBUG_PATH})
 FIND_PROGRAM(MSP430_FLASHER MSP430Flasher               PATHS ${FLASHER_PATH})
 
 set(CMAKE_C_COMPILER    ${MSP430_CC} CACHE STRING "C Compiler")
 set(CMAKE_CXX_COMPILER  ${MSP430_CXX} CACHE STRING "C++ Compiler")
 
 set(AS     ${MSP430_AS} CACHE STRING "AS Binary")
 set(AR     ${MSP430_AR} CACHE STRING "AR Binary")
 set(OBJCOPY ${MSP430_OBJCOPY} CACHE STRING "OBJCOPY Binary")
 set(OBJDUMP ${MSP430_OBJDUMP} CACHE STRING "OBJDUMP Binary")
 set(SIZE    ${MSP430_SIZE} CACHE STRING "SIZE Binary") 
 
 IF(NOT CMAKE_BUILD_TYPE)
    SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
       "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
       FORCE)
 ENDIF(NOT CMAKE_BUILD_TYPE)
 
 set(MSPGCC_OPT_LEVEL    "g" CACHE STRING "MSPGCC OPT LEVEL")
 set(MSPGCC_WARN_PROFILE "-Wall -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wunused"
            CACHE STRING "MSPGCC WARNINGS")
 
 set(MSPGCC_DISABLED_BUILTINS "-fno-builtin-printf -fno-builtin-sprintf"
                              CACHE STRING "MSPGCC Disabled Builtins")
 
 set(MSPGCC_OPTIONS "-gdwarf-3 -fdata-sections -ffunction-sections -fverbose-asm ${MSPGCC_DISABLED_BUILTINS}"
                    CACHE STRING "MSPGCC OPTIONS")
 
 set(CMAKE_C_FLAGS   "${MSPGCC_WARN_PROFILE} ${MSPGCC_OPTIONS} -O${MSPGCC_OPT_LEVEL}  -DGCC_MSP430" CACHE STRING "C Flags")
 
 set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--gc-sections -Wl,--print-gc-sections"
                               CACHE STRING "Linker Flags")
 set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections"
                            CACHE STRING "Linker Flags")
 
 # リンカコマンドの設定
 set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_C_COMPILER> ${CMAKE_EXE_LINKER_FLAGS} <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
                               CACHE STRING "C++ Executable Link Command")
 
 set(CMAKE_C_LINK_EXECUTABLE ${CMAKE_CXX_LINK_EXECUTABLE} CACHE STRING "C Executable Link Command")
 
 set(PROGBIN     ${MSP430_FLASHER} CACHE STRING "Programmer Application")


リンカコマンドファイルのコピー

ターゲットデバイスのリンカコマンドファイルを、プロジェクトのトップディレクトリにコピーする。

cp /<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス>/include/<ターゲットデバイス名>.ld \
   <MSP430プロジェクトのトップディレクトリ>

# 例: MSP430G2553を使用する場合
cp /<上記のセクションでインストールしたMSP430 GCCツールチェーンのパス>/include/msp430g2553.ld \
   <MSP430プロジェクトのトップディレクトリ>


プロジェクトの設定
  1. プロジェクトを開いて、[ファイル]メニューバー - [設定]を選択する。
  2. [設定]画面の左ペインから、[ビルド、実行、デプロイ] - [CMake]を選択する。
  3. [設定]画面の右ペインから、[+]アイコンを選択して、CMakeの設定を行う。
    • [名前]
      任意の名前
    • [ビルドタイプ]プルダウン
      Debug
    • [ツールチェーン]プルダウン
      MSP430ツールチェーンを選択する。
    • [ジェネレーター]
      [デフォルトを使用する]
    • [CMakeオプション]
      -DCMAKE_TOOLCHAIN_FILE=<上記のセクションで作成したCMakeツールチェーンファイルのパス>
  4. [OK]ボタンを押下する。



ACPを使用したOpenCodeとの連携

ACP (Agent Client Protocol) を使用すると、CLionのAI ChatからOpenCodeをコーディングエージェントとして利用できる。

ACPは、コードエディタとAIコーディングエージェント間の通信を標準化するオープンなプロトコルであり、LSP (Language Server Protocol) が言語サーバ統合を標準化したのと同じ役割を、エージェント向けに果たす。
CLionはACP互換エージェントをサブプロセスとして起動して、JSON-RPC over stdioで通信する。

ACPの仕組み

ACP連携時の全体構成は次のとおりである。

  • CLion (AI Assistant)
    AI Chatからエージェントを選択し、プロンプトを送信する。
    ACP互換エージェントをサブプロセスとして起動する。
  • 通信経路 (JSON-RPC / stdio)
    CLionとエージェントの間で、JSON-RPCメッセージを標準入力と標準出力でやり取りする。
    ローカル実行が基本であり、ネットワークポートの開放は不要である。
  • OpenCode (opencode acp コマンド)
    OpenCodeの acp サブコマンドが、ACP互換サーバとしてstdio上で待ち受ける。
    設定済みのツール、MCPサーバ、AGENTS.md ファイルのルール等を通常どおり利用する。


JetBrains公式では、ACP互換エージェントはJetBrains AIサービスのサブスクリプション無しでも接続・利用可能とされている。
ただし、Windows Subsystem for Linux (WSL) 環境では、ACP互換エージェントはサポート対象外である。

前提条件

  • OpenCodeがインストール済みであること。
    インストール手順は、インストール - OpenCodeのページを参照すること。
  • OpenCodeのプロバイダ認証が完了していること。
  • CLionでAI Assistantが利用可能であること。
  • WSL環境ではないこと。


OpenCode側の準備

ACP設定の前に、OpenCode側の初期化と認証を済ませておく。
これは、JetBrains側の設定ファイルにAPIキーを直接記述しなくて済むようにするためである。

プロバイダの認証

OpenCodeのプロバイダ認証には、CLIとTUIの2つの方法がある。
どちらの方法でも、認証情報は ~/.local/share/opencode/auth.json ファイルに保存される。

  • opencode auth login コマンド (CLI)
    ターミナルから直接プロバイダを選択して認証する。
  • /connect コマンド (TUI)
    OpenCodeを起動して、TUI内で /connect コマンドを実行してプロバイダを選択し、APIキーを入力する。


CLIで認証する場合は、次のコマンドを実行する。

opencode auth login


TUIで認証する場合は、OpenCodeを起動後、TUI内で以下に示すコマンドを実行する。

/connect


設定済みのプロバイダを確認する。

opencode auth list


利用可能なモデル一覧を更新して確認する。

opencode models --refresh


プロジェクト設定ファイルの準備

OpenCodeは、プロジェクトルートの opencode.json / opencode.jsonc ファイルを読み込み、グローバル設定よりも優先する。

OpenCodeは起動時にカレントディレクトリから設定ファイルを探して、Gitルート方向へ探索する。
プロジェクト固有のモデル指定やMCPサーバ設定は、このファイルに記述する。

  • opencode.json / opencode.jsonc
     {
        "$schema": "https://opencode.ai/config.json",
        "model": "opencode-go/glm-5.2",
        "instructions": [
           "AGENTS.md"
        ]
     }
    


作業ルールや設計方針は、プロジェクトルートの AGENTS.md ファイルに記述する。
OpenCodeはこのファイルを読み込み、プロジェクト専用のルールとして適用する。

AGENTS.md ファイルは手動で作成するほか、OpenCode TUIの /init コマンドで生成できる。
OpenCodeを起動して、TUI内で /init コマンドを実行すると、OpenCodeがプロジェクト構成を解析して、AGENTS.md ファイルのひな形を作成または更新する。

JetBrains側のACP設定

~/.jetbrains/acp.jsonの作成

JetBrains系IDEのACP設定は、ユーザ単位のファイル ~/.jetbrains/acp.json ファイルで管理される。

このファイルは、次のいずれかの経路から作成・編集できる。

  • AI Chatツールウィンドウ右上のメニュー - [Add Custom Agent]
    ファイルが存在しない場合は新規作成され、編集用に開かれる。
  • [設定] - [ツール] - [AI Assistant] - [Agents]
    Agents設定画面からエージェントの追加やMCP設定の切り替えを行う。


手動で作成する場合は、以下に示す通り、ディレクトリとファイルを用意する。

mkdir -p ~/.jetbrains


OpenCode実行ファイルの絶対パスの確認

command コマンドには、OpenCode実行ファイルの絶対パスを指定する必要がある。

JetBrains公式のトラブルシューティングでも、エージェント起動失敗時はフルパスの使用が推奨されている。

command -v opencode
readlink -f "$(command -v opencode)"

# 出力例
/home/<ユーザ名>/.opencode/bin/opencode


acp.jsonの記述

確認した絶対パスを command キーに設定する。
args キーには acp を指定し、OpenCodeをACPサーバとして起動する。

  • ~/.jetbrains/acp.json
     {
        "default_mcp_settings": {
           "use_idea_mcp": true,
           "use_custom_mcp": true
        },
        "agent_servers": {
           "OpenCode": {
              "command": "/home/<ユーザ名>/.opencode/bin/opencode",
              "args": [
                 "acp"
              ]
           }
        }
     }
    


下表に、各設定項目の意味を示す。

acp.jsonの設定項目
項目 配置 説明
default_mcp_settings 最上位 全ローカルエージェントに適用される既定のMCP設定
use_idea_mcpuse_custom_mcp を配下に持つ。
use_custom_mcp default_mcp_settings 配下 ユーザ設定済みのMCPサーバをエージェントへ公開するかどうか。
既定値は true
use_idea_mcp default_mcp_settings 配下 JetBrains内蔵のIntelliJ MCP Serverをエージェントへ公開するかどうか。
既定値は false
agent_servers 最上位 登録するエージェントの最上位オブジェクト
各キーがAI Chatに表示されるエージェント名になる。
command 各エージェント配下 エージェントの実行ファイルパス
AI Assistantはこのファイルをサブプロセスとして起動する。

※絶対パスを指定すること。
args 各エージェント配下 起動時に渡すコマンドライン引数の配列
OpenCodeでは acp を指定する。
env (省略可能) 各エージェント配下 エージェントプロセスに設定する環境変数
プロキシ等が必要な場合に使用する。


環境変数が必要な場合の記述

プロキシ環境等で環境変数が必要な場合は、env キーに追加する。

APIキーは env キーに直接記述せず、原則として opencode auth login コマンドで設定した認証情報を使用すること。

 {
    "agent_servers": {
       "OpenCode": {
          "command": "/home/<ユーザ名>/.opencode/bin/opencode",
          "args": [
             "acp"
          ],
          "env": {
             "HTTP_PROXY": "http://proxy.example.local:8080",
             "HTTPS_PROXY": "http://proxy.example.local:8080"
          }
       }
    }
 }


CLionでの有効化と動作確認

設定の反映

acp.json ファイルを作成または編集した直後から、通常はAI Chatでエージェントを選択できる。
エージェントがAI Chatに表示されない場合は、acp.json ファイルのJSON形式を確認したうえでCLionを再起動すること。

ファイル形式の確認とIDE再起動は、JetBrains公式のトラブルシューティング手順にも挙げられている。

エージェントの選択

CLionでAI Chatツールウィンドウを開いて、チャットモードのエージェントセレクタから[OpenCode]を選択する。

追加したエージェントは、エージェントアイコン付きでリストに表示される。

動作確認

まず読み取り中心の指示で接続を確認する。

このプロジェクトのCMakeビルド構成と主要モジュールを調査し、ビルド方法とテスト方法を要約してください。
ファイルは変更しないでください。


エージェントが応答して、ファイル参照や検索を実行できれば、ACP連携は成功である。

その後、実装や修正の指示を出して運用に進めればよい。

OpenCode単体での事前確認

JetBrains側でトラブルシュートする前に、ターミナルで opencode acp コマンドが起動するか確認できる。
正常な場合は、プロセスがJSON-RPCメッセージを待機する状態で停止する。

/home/<ユーザ名>/.opencode/bin/opencode acp


プロジェクト単位の設定

ACPエージェントの登録自体は、JetBrainsユーザ単位 (~/.jetbrains/acp.json) でのみ行う。

JetBrains公式仕様では、プロジェクトルートや .idea ディレクトリ配下にACP設定を置いて、プロジェクト単位で有効化することはサポートされていない。
プロジェクトごとにACPエージェントを切り替えたい要件はYouTrackで要望が挙がっている機能であり、現時点では未対応である。

一方、OpenCode側の挙動はプロジェクト単位で制御できる。
推奨される構成を次に示す。

  • ~/.jetbrains/acp.json
    JetBrains全体でOpenCodeのACPエージェントを1つ登録する。
  • <プロジェクトルート>/opencode.json
    そのプロジェクト専用のOpenCode設定を記述する。モデル、MCPサーバ、ツールの許可等を指定できる。
  • <プロジェクトルート>/AGENTS.md
    そのプロジェクト専用の作業ルール、設計方針、禁止事項を記述する。


この分離により、ACPエージェントの登録はユーザ単位のまま、OpenCodeの挙動だけをプロジェクトごとに切り替えられる。

トラブルシューティング

OpenCodeエージェントがAI Chatに表示されない
  • 原因
    acp.json ファイルの形式誤り、または設定変更がIDEに反映されていない。

  • 解決方法
    • acp.json ファイルが正しいJSON形式であることを確認する。
    • CLionを再起動して設定を反映し直す。


エージェントの起動に失敗する
  • 原因
    OpenCodeの絶対パス誤り、OpenCode側の認証未完了、実行ファイルの異常

  • 解決方法
    • OpenCode実行ファイルの絶対パスが指定されていることを確認する。
    • ターミナルで opencode コマンドを手動実行して、OpenCodeが起動するか確認する。
    • opencode auth list コマンドを実行して、プロバイダ認証が完了しているか確認する。


ACPログの取得

AI Chatツールウィンドウ右上のメニューから[Get ACP Logs]を選択すると、エージェントのログをアーカイブ形式で取得できる。

より詳細なログが必要な場合は、Registryの llm.agent.extended.logging キーを有効化する。
ただし、この詳細ログにはチャット内容等の機密情報が含まれる可能性があるため、共有前には内容を確認すること。

Registryの有効化手順は次のとおりである。

  1. [Shift]キーを2回押下して、Search Everywhereを開く。
  2. Registry と入力して、[Enter]キーを押下する。
  3. [Ctrl] + [F]キーを押下して、llm.agent.extended.logging を検索して、有効化する。
  4. CLionを再起動する。


セキュリティと運用上の注意

  • APIキーを acp.json ファイルに平文で記述しないこと。
    プロバイダ認証は opencode auth login コマンドで行い、保存された認証情報を再利用する。
  • llm.agent.extended.logging 有効時のログの取り扱いに注意すること
    チャット内容やファイル内容が含まれる可能性がある。
    共有時には事前に機密情報を取り除くこと。
  • WSL環境ではACP互換エージェントは動作対象外である。
    ネイティブLinux環境でCLionとOpenCodeを動かすこと。
  • command コマンドには絶対パスを使用すること。
    相対パスやシェルのエイリアスは、JetBrainsのサブプロセス起動では解決されない場合がある。
  • MCPサーバの公開範囲を意識すること
    use_idea_mcp キー および use_custom_mcp キーで、エージェントへ公開するMCPサーバを制御できる。


関連情報