オプション沼(27) Arduino IDE 2.x、コンパイラオプションの在処

Joseph Halfmoon

Arduino環境ではツールチェーンの上に一枚かぶさっているプリプロセッサ的なものが皆よきように計らってくれるのでお楽。しかし、たまにコンパイラオプションを操作しようと思うと隠されている分メンドイです。まあその前に、メンドクセーものどもが画面に映らないように制御もされとるので、それを外して現実を見るところからっすけど。

※『オプション沼』投稿順indexはこちら

※今回は動作確認に以下を使用しています

    • Arduino IDE 2.3.2
    • ビルド対象のボードパッケージは、renesas_uno\1.3.1 (Arduino Uno R4ボード用のパッケージです)
Arduino IDE

ビルド時に特にエラーが無ければいつも登場するのが以下のような出力じゃないかと思います。DefaultOutput

ビルドした結果、メモリをどれだけ使っていて、そのうちRAM領域をどれだけ使っているかなど「ぜひとも」知りたいことが表示されています。

半面、フツーにコンパイラでビルドしたときにいろいろ出力される「コマケー話」は一切なし。大体、フツーにコンパイラするときには、コマンドラインなり、Makefileなりに書き込まないとならないオプションの類も一切指定してません。それで済むArduinoはお楽。

まずはコマケー話が見えるようにしておく

さて、コマケー話が見えないのは「基本設定」の以下の緑のマーカー部分にチェック、設定値が入ってないからであるようです。以下は当方環境でのデフォルト設定です。ArduinoIDEoutputControlDefault

 

ここは黄色のマーカーのように「ぜんぶ表示」にしてみます。どうせチェックを外せば元に戻って「見えなくなる」ので気楽にチェック入れます。ArduinoIDEoutputControl

気楽にチェック入れると、ノーチェックのときにたった2行だった出力が、以下のようにかなりな行数となります(個人的なパスを灰色で潰してあります。)OutputDetail

フツーにg++ でビルドしている雰囲気が出てまいりました。良い感じ?

platform.local.txt は使えるの?

さて、Arduino IDEにおいてオプションどもはGUIではなく、ファイル上で設定ということになっているようです。ファイル名は、

platform.txt

です。ただし、platform.txtは使用しているボードパッケージ(それ毎にツールチェーンが異なっていたりする)によって異なってます。今回テストに使っている、Arduino Uno R4用のルネサスマイコンの場合、当方環境では以下にありました。

~パッケージ等のインストールパス~\Arduino15\packages\arduino\hardware\renesas_uno\1.3.1

なお、パッケージをアップデートしたりするとパスが変わります。今回も使っている間に 1.2.2から 1.3.1へアップデートしたので、パスが変わりました。ターゲットのパッケージ名とバージョンは要チェックです。つい「魔が差して」アップデートしてしまうと追加した筈のオプションが無い、ということになります(私はやってしまった。)

なお、platform.txtは、ボードパッケージの基本的な設定が収められているので、これを直接編集するのは忍びないです。そのため、

platform.local.txt

というローカルな設定ファイルが使用可能です( platform.local.txtは廃止とかいう噂をどこぞで見ましたが、手元の Arduino IDE 2.3.2 では問題なく使えてます。)このローカルファイルは、記載された項目のみ上書きするので、platform.txtの特定項目のみ書き入れておけばよいようです。

今回はテストのため、-v オプション(小文字のvだよ)をplatform.local.txtに追加してみました。-vオプションについては、以下の過去回で扱ってます。

オプション沼(1) gcc 困ったとき?の -v オプション、眺めてみるの回

御本家GNU様の解説ページは以下です。

3.2 Options Controlling the Kind of Output

gcc(g++) が「下請け」の奴らを呼び出す様子を詳細に出力してくれるオプションです。詳細すぎて「何やら山のように出力される情報に心の扉が閉まる気がしてなりません」などと第1回でヘタレなことを書いてます。

実際にArduino IDEの出力ウインドウに出力された結果のごくごくごく一部が以下に。optionsZOOM

-v オプションが見えとります。なお、-v の出力は、標準エラー出力 なので、オレンジ色っぽいテキストになってるみたい。大量の出力の中には知りたいことがあるのか?どうなんだ?

オプション沼(26) gcc、Wunused一族、一筋縄ではいかない奴? へ戻る