72
63

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Arduino IDE でESP32のコンパイル時間を短縮する方法

Last updated at Posted at 2021-07-08

#はじめに

ESP32をArduinoIDEで開発していると妙にコンパイルが遅い気がします。AVRに比べれば機能が多いのでコンパイルに時間がかかるのはわかるのですが、1度ビルドし直すだけでも長いプログラムだと1分以上かかってしまい非常に非効率です。

原因はコンパイルするたびにフルビルドしてしまうため、少し変えただけでもフルビルドがかかってしまいます。そのような問題を解決するためにccacheというC,C++用のコンパイル高速化ソフトがあります。

このソフトはコンパイル時に生成されたファイルをキャッシュしておくことで2回目以降のコンパイルを高速化するというものです。初回コンパイル時にはすべてのファイルをキャッシュするため時間がかかりますが、次からは使える部分をキャッシュから流用してコンパイルするのでフルビルドする必要がなくなるため結果的に高速でコンパイルできるようになります

#ccacheを利用するための設定

ArduinoIDEの仕様でスケッチをコンパイルする際はランダムな数字の名前で生成されるフォルダにオブジェクトファイルが作られ、そのフォルダに対してコマンドを実行するためこのままではccacheを利用しにくい仕様となっているため出力先を固定します

####1.ビルド先の固定
最初にビルド先のディレクトリを作成します
コマンドプロンプトを開いて以下のコマンドでTempフォルダに作成します

cd %temp%
mkdir arduino_build

image.png

Arduinoを起動しメニューのファイルから環境設定を開きます
image.png

ここをクリックします
image.png

エクスプローラーが開かれるのでpreferemces.txtを任意のエディターで開きます
開く前にArduinoIDEを必ず閉じてください
image.png

下のテキストを末尾に貼り付けます
※ユーザー名は適宜置き換えてください

preference.txt
build.path=C:\Users\Owner\AppData\Local\Temp\arduino_build

image.png

上書き保存したらビルドパスの固定は完了です
※権限の関係で上書き保存できない場合があるのでその際はデスクトップに保存してから移動させると権限問題を回避できます

####2.ccacheのインストール

ccache公式サイトから最新バージョンをダウンロードします。2022年3月28日現在、最新バージョンは4.6です。

適当な解凍ソフトでZIPファイルを任意の場所に解凍してください

image.png

4つのファイルのうちccache.exeのみをコピーします。
コピー先はArduinoがインストールされているフォルダとしておきます。
デフォルトのインストール場所を変えていない人はC:\Program Files (x86)\Arduinoになります。
管理者権限が必要なので警告が出ますがそのまま続行してOKです。

image.png

このようにarduino.exeと同じ階層に配置します

####3.パスを通す

ArduinoIDEがインストールされているフォルダにはパスが通っていないためパスを通します

スタートメニューを開いてpathと入力してシステム環境変数の編集を開きます

image.png
環境変数をクリックします
image.png
今回はユーザーのpathのみ通すのでユーザー環境変数のpathを選択して編集をクリックします
image.png
新規作成してArduinoのインストールフォルダにpathを通します
※インストール場所を変えている人は適宜変更してください
image.png

OKを何度かクリックして閉じれば完了です

念のためパスが通っているかコマンドプロンプト等で確認しておくと安心です
image.png

####4.ArduinoIDEのビルドオプションの変更
ccacheをインストールしただけではビルド時に有効にならないのでArduinoIDEのビルド設定を変更してccacheを使うように設定する必要があります。

Arduino core for the ESP32を使って開発しいる場合は

C:\Users\Owner\Documents\Arduino\hardware\espressif\esp32

に設定ファイルがあります
(ユーザー名は適宜読み替えてください)

[追記]
2022年3月29日現在、platform.txtは”C:\Users(ユーザー名)\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6”という場所にある可能性があります(要検証)

platform.txtという設定ファイルがあるので任意のエディターで開いてください
image.png

Compile c FilesCompile c++ Filesいう行があるのでそこにccacheを使うオプションを追記します。

image.png

recipe/c/o/pattern=とrecipe/cpp/o/pattern=の後ろにccacheと追記します
また、ccache と次の**”**の間にはスペースがいるので忘れずに入れてください
image.png

上書き保存したら設定は完了です。

#Arduino IDE でビルド
ビルドする際にccacheが有効になっているかを確認するために環境設定からより詳細な情報を表示するコンパイルにチェックを入れてコンパイラの警告は全てにしておきます
image.png

適当なコードをビルドしてみます。
image.png
このように**スケッチをコンパイルしています...**の後にccacheが先頭の文字に入っていたら成功です。

初回ビルドはフルビルドなので遅いですが2回目以降のビルドはキャッシュが効いてくるので高速でコンパイルできます。

###結果

商用電源周波数監視装置のプログラムをビルドしてみました

ccacheなし ccache有効 倍率
58秒 12秒 4.83倍

image.png

特にライブラリを多用するプログラムだとそのあたりがキャッシュで高速化されるため大幅な速度向上が見込めます
(画像ではLovyanGFXのライブラリ部分が再利用されている)

#あとがき
ccacheをインストールするだけでコンパイルの速度が格段に向上するのでデバッグ作業がはかどります。(前は一つのパラメータ変更しただけでもとても時間がかかっていました)みなさんも今日からccacheを使って快適なESP32開発を楽しみましょう!!!

72
63
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
72
63

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?