VS CodeでRXマイコンのプロジェクトをビルドする方法はいくつかのサイトで紹介されています。それらは統合開発環境 CS+ での事例だったので、もう1つの環境 e2studio で試してみました
結果、eclipseのHeadless Buildを使うことでビルドできました。ただし、日本語メッセージの文字化けについては、英語表示に切り替えて回避してます
- 2022/10:64bit版の情報を補足しました
e2studioには 32bit版(V7.8.0) と 64bit版(2022-10) がありますが、64bit版の途中でコマンドライン用の実行ファイルが変わった為、異なる点を追記しました。説明の都合上、eclipsec.exe
のケースを32bit版、e2studioc.exe
のケースを64bit版と呼びます - 2022/11:ビルド時のエラーを出力する設定を追加しました
1. 環境
- Windows 10 Pro
- Visual Studio Code: 1.59.0
- PowerShell: 5.1.19041.1151
- 統合開発環境: e2studio V7.8.0 (32bit版)
- コンパイラ: Renesas CC-RX v03.03.00
2. 手順の概略
3. コマンドラインでビルド出来るようにする
Renesasの「FAQ 3000149 : e² studioのプロジェクトをコマンドラインでビルドするには?」に従って作業します
e2studioのインストールフォルダ
/eclipse/e2studio.ini ファイルを同じフォルダにコピーし、ファイル名をeclipse.ini
に変更する
64bit版の場合はe2studioc.ini
に変更する ※ここは公式情報ではないので間違っているかも132bit版 64bit版
準備としてはこれだけ。あとは、コマンドプロンプトで下記を実行すれば良いです
e2studioのインストールフォルダ
\eclipse\eclipsec.exe -nosplash --launcher.suppressErrors -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data "e2studioのワークスペースフォルダ
" -cleanBuildプロジェクト名
(/ビルド構成
)- 補足
ビルド構成
は設定しなくてもよい。設定しない場合は、全ての構成が対象になる- -cleanBuild を指定するとクリーンアップとビルド、-build を指定するとビルドのみになる
具体例として、私の環境だと
C:\Renesas\e2_studio\eclipse\eclipsec.exe -nosplash --launcher.suppressErrors -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data "C:\User\e2studio" -cleanBuild rx231_cast_test/Debug
64bit版の場合
C:\Renesas\e2_studio\eclipse\e2studioc.exe -nosplash --launcher.suppressErrors -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data "C:\User\e2studio" -cleanBuild rx231_cast_test/Debug
という感じになります。なお、私の環境・ワークスペース構成は下記です
e2studioのインストールフォルダ
= C:\Renesas\e2_studioe2studioのワークスペースフォルダ
= C:\User\e2studioプロジェクト名
= rx231_cast_testビルド構成
= Debug
コマンドを実行すると、クリーンアップおよびビルドが走ります。実行結果は下記の通り
ビルドは完了しますが、一部の日本語メッセージが文字化けします
C:\Renesas\e2_studio\eclipse\eclipsec.exe -nosplash --launcher.suppressErrors -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data "C:\User\e2studio" -cleanBuild rx231_cast_test/Debug 23:39:13 **** 繝励Ο繧ク繧ァ繧ッ繝・rx231_cast_test 縺ォ蟇セ縺吶k讒区・ Debug 縺ョ 繧ッ繝ェ繝シ繝ウ縺ョ縺ソ縺ョ繝薙Ν繝・**** make -j4 clean rm -rf *.sni *.dbg *.lst *.lis *.lpp *.map *.x *.lbp *.bls *.libelf *.rel *.lbk *.abs *.mi *.jmp *.fsy 1st/*.abs 1st/*.jmp 1st/*.fsy rx231_cast_test.abs rx231_cast_test.lib ・・・ ECHO は <OFF> です。 'Clean complete.' 23:39:13 Build Finished. 0 errors, 0 warnings. (took 497ms) 23:39:15 **** 繝励Ο繧ク繧ァ繧ッ繝・rx231_cast_test 縺ォ蟇セ縺吶k讒区・ Debug 縺ョ 繝薙Ν繝・**** make -j4 all 'Scanning and building file: ../src/smc_gen/r_bsp/mcu/all/r_bsp_common.c' ・・・ Converting the DWARF information.... Constructing the output ELF image.... Saving the ELF output file rx231_cast_test.x 'Build complete.' 23:39:24 Build Finished. 0 errors, 8 warnings. (took 9s.441ms) ワークスペースを保管しています。
4. 日本語メッセージの文字化けに対処する
eclipseの表示言語を英語に切り替えて対処します。elipcse.ini
の先頭に下記2行を追加する
64bit版の場合はe2studioc.ini
に追加する
-nl en_US
これにより、ビルド時のメッセージが英語に変わり、文字化けを回避できます
-- 変更前 -- 23:43:13 **** 繝励Ο繧ク繧ァ繧ッ繝・rx231_cast_test 縺ォ蟇セ縺吶k讒区・ Debug 縺ョ 繧ッ繝ェ繝シ繝ウ縺ョ縺ソ縺ョ繝薙Ν繝・**** make -j4 clean ・・・ 23:43:16 **** 繝励Ο繧ク繧ァ繧ッ繝・rx231_cast_test 縺ォ蟇セ縺吶k讒区・ Debug 縺ョ 繝薙Ν繝・**** make -j4 all -- 変更後 -- 23:45:02 **** Clean-only build of configuration Debug for project rx231_cast_test **** make -j4 clean ・・・ 23:45:05 **** Build of configuration Debug for project rx231_cast_test **** make -j4 all
日本語で対処する方法も色々探したのですが、どれもうまく行きませんでした
例えば elipces.ini に-Dfile.encoding=MS932
を追加するとか。結局、英語にするのが一番簡単でした
5. VS Codeのビルドタスクを作る
ビルドが出来るようになったので、VS Code 上でビルドタスクを設定します
/.vscode/tasks.json
ファイルがない状態で「ターミナル>タスクの構成」を選択- 「テンプレートから tasks.json を生成」、「MSBuild ビルド ターゲットを実行」の順に選択
/.vscode/tasks.json
ファイルが生成される
生成されたファイルの中身を下記のように修正。★の部分は環境に合わせて調整必要
{ "version": "2.0.0", "tasks": [ { "label": "e2studioプロジェクトのクリーンビルド", "type": "shell", // ★eclipsec.exe もしくは e2studioc.exe のフルパスを指定 // [e2studioのインストールフォルダ]/eclipse/ にあるはず "command": "C:/Renesas/e2_studio/eclipse/eclipsec.exe", // "command": "C:/Renesas/e2_studio/eclipse/e2studioc.exe", "args": [ "-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.cdt.managedbuilder.core.headlessbuild", "-data", // ★e2studioのワークスペースフォルダを指定 "C:/User/e2studio", // ★build or cleanBuild を指定 "-cleanBuild", // ★ビルド対象のプロジェクト/ビルド構成を指定 "rx231_cast_test/Debug" ], "group": "build", "presentation": { "reveal": "always", // Terminal パネルを必ず開く "clear": true // 実行前に Terminal をクリア }, "problemMatcher": [] } ] }
以上で設定は完了です
6. ビルドタスクを実行してみる
「ターミナル>タスクの実行...」よりタスク「e2studioプロジェクトのクリーンビルド」を実行します。起動に少し時間が掛かりますが、クリーンアップ・ビルドが順次実行されて、ビルド完了します
補足
ビルド時のメッセージが増えてくると、最初の方のメッセージが流れてしまって見えなくなります。「ファイル>ユーザ設定>設定」よりterminal.integrated.scrollback
を検索し、ターミナルの最大行数を調整してください。私は5000行に設定しました
7. ビルド時のエラーを「問題」に出力
tasks.json
の problemMatcher
の部分を修正すると、ビルド時のコンパイルエラーを「問題」のタブに出力できます。但し、リンカ関係のエラー表示は完全ではないです(下図の E0562310, W0561017 のようにファイル名としてエラーコードが表示される)。この設定は かふぇルネ(Renesas Engineering Community) の投稿を参考に作りました
"problemMatcher": [ { // コンパイラのエラーを検出 "owner": "ccrx", "fileLocation": [ // ★ビルド対象のビルドロケーション(makefileが出来る場所)を指定 // ${workspaceFolder}/ビルド構成 になるはず "relative", "${workspaceFolder}/HardwareDebug" ], "severity": "error", "pattern": { "regexp": "^(.*)\\((\\d+)\\):([CEF]\\d+):(.*)$", "file": 1, "line": 2, "code": 3, "message": 4 } }, { // コンパイラのワーニングを検出 "owner": "ccrx", "fileLocation": [ // ★同上 "relative", "${workspaceFolder}/HardwareDebug" ], "severity": "warning", "pattern": { "regexp": "^(.*)\\((\\d+)\\):(W\\d+):(.*)$", "file": 1, "line": 2, "code": 3, "message": 4 } }, { // コンパイラのインフォメーションを検出 "owner": "ccrx", "fileLocation": [ // ★同上 "relative", "${workspaceFolder}/HardwareDebug" ], "severity": "info", "pattern": { "regexp": "^(.*)\\((\\d+)\\):(M\\d+):(.*)$", "file": 1, "line": 2, "code": 3, "message": 4 } }, { // リンカなどのエラーを検出 // ※ファイルを特定できないため"file"にエラーコードを指定、ファイル名としてエラーコードが表示されます // ※簡単にするため、エラー/ワーニング/インフォメーションを区別してません "owner": "ccrx", "pattern": { "regexp": "^([CEFWM]\\d+):(.*)$", "file":1, "code": 1, "message": 2 } } ]
なお、エラーメッセージのフォーマットは CC-RX ユーザーズマニュアル(R20UT3248JJ0111) の 10.2 出力形式 に記載されています。e2studio のエラーパーサー設定も参考になります
- ファイル名 (行番号): メッセージ種別(CEFMW) コンポーネント番号(05) メッセージ番号 : メッセージ
- メッセージ種別(CEFMW) コンポーネント番号(05) メッセージ番号 : メッセージ
8. まとめ
e2studioのプロジェクトが VS Code でビルド出来るようになりました。今なら e2studio 2020-04以降でサポートされた CMakeプロジェクトを使った方が筋が良い気がしますが、既存プロジェクトをそのまま VS Code でビルドできるのは便利です
参考にした情報
かふぇルネ(Renesas Engineering Community) の投稿
- NoMaYさん - 最近Atom IDEとかVisual Studio Codeとか新しい開発環境が出て来てますね(Renesas CSplusと連携させる方法を探したいですね)
VS Code と e2studio の連携に関し、一番詳細に取り組まれてます。まず、最初に参照する良いです
- NoMaYさん - 最近Atom IDEとかVisual Studio Codeとか新しい開発環境が出て来てますね(Renesas CSplusと連携させる方法を探したいですね)
統合開発環境 CS+ でのビルド事例
- とうふ荘の手記てき! - ルネサスのマイコンをVSCodeを使ってプログラム、そしてCS+でビルド、Flash Programmerで書き込みを行う。
- RT Mobility Robot Blog - VSCodeを使ったRXマイコン開発環境の紹介 – d-satoのマイクロマウス研修 Part8
EclipseのHeadless Build
- Knowledge Base | Renesas Customer Hub - FAQ 3000149 : e² studioのプロジェクトをコマンドラインでビルドするには?
- memoメモ - JenkinsでEclipse CDT (C++) プロジェクトをビルドする
- Qiita(@oyan29さん) - コマンドラインでEclipse
- GNU MCU Eclipse - Scriptable builds from the command line
Eclipseの表示言語を英語にする
- GWT Center - Eclipse:完全に英語モードにする方法
- stack overflow - how to change the display language in eclipse
VS Code のビルドタスク設定、ターミナルの最大行数の調整
VS Code の problemMatcher
- problemMatcher 説明
- VS Code - Defining a problem matcher
- VS Code - Schema for tasks.json
- Michael Heapさん - Getting started with Problem Matchers
- けーちゃんのプログラム開発ノート -【VSCode】タスクの問題マッチャ―(problemMatcher)を理解してみる
- 重大度(severity)毎にproblemMatcherを設定する
- stack overflow - VSCode problemMatcher severity mapping
- Hiroaki Nagashimaさん- TOPPERSの開発も出来ちゃうVSCodeのビルド&デバッグ使いこなし術
p35あたりから、RXのコンパイラエラー出力について言及有り
- problemMatcher 説明
-
試した限りでは 、64bit版の場合は
eclipse.ini
ではなく、e2studioc.ini
が参照されるようです。また、e2studioc.ini
がない場合は、e2studio.ini
が参照される感じでした。ただ、RenesasのFAQとは一致していないので、この理解は間違っているかもしれません↩