環境はmacOS 10.13.6, Arduino IDE 1.8.8, CLion 2018.3.4
TL;DR
Arduino IDEをインストールしておく。
CLionにArduino, Serial Port Monitorプラグインをインストールする。これ↓
- https://plugins.jetbrains.com/plugin/9984-arduino
- https://plugins.jetbrains.com/plugin/8031-serial-port-monitor
Arduinoプロジェクトルートで以下のコマンドで必要なファイルを落としてくる。
$ wget -qO - https://github.com/francoiscampbell/arduino-cmake/archive/dbd4fe372b9a0120325b429b3ed23c311ab3dc66.zip | bsdtar -xf- --include '*/cmake' --strip-components 1
プロジェクトルートで以下の内容のCMakeLists.txtを作る。 <project_name>
と <sketch_file_path>
は自分のプロジェクトに合わせて更新する。
cmake_minimum_required(VERSION 2.8.4)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/ArduinoToolchain.cmake)
set(PROJECT_NAME <project_name>)
project(${PROJECT_NAME})
set(${CMAKE_PROJECT_NAME}_SKETCH <sketch_file_path>)
include_directories(~/Documents/Arduino/libraries)
#### Uncomment below additional settings as needed.
# set(${CMAKE_PROJECT_NAME}_BOARD mega)
# set(${CMAKE_PROJECT_NAME}_PORT /dev/ttyACM0)
# set(mega.build.mcu atmega2560)
# set(mega.upload.protocol wiring)
# set(mega.upload.speed 115200)
generate_arduino_firmware(${CMAKE_PROJECT_NAME})
CLionのImport ProjectしてOpen Existing Projectを選択する。
終わり。
解説
要はArduinoプラグイン入れたCLionでNew Arduino Sketch Projectした時に自動で作られるファイル群を手動で作ってるだけ。新規のプロジェクトだと勝手にやってくれるからわざわざこういうことする必要ない。既存のプロジェクトをimportする機能欲しい。
CMakeList.txtはinclude_directories
の行だけいじっていて、Arduino IDEでライブラリをインストールするときのディレクトリを追加してる。
Serial
とかが名前解決されない場合inoファイルに#include "Arduino.h"
すれば良い。
まだ静的解析が上手くできた段階でこのエントリ書いててarduinoにアップロードとかまだやってないんだけど、多分 ${CMAKE_PROJECT_NAME}_BOARD
の所は /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/boards.txt
に書いてあるunoとかmegaの所の文字列だと思う。
このcmake周りは以下のプロジェクトが元になっているので、CMakeLists.txtのArduino周りの設定はこれのREADME読めばいいはず。
Arduinoプラグインで実際に使われているのは↑のforkのforkのこれ。
Trouble Shooting
色々いじってると静的解析がうまくいかなくなったりしたんだけど、cmake-build-debugディレクトリ削除してCLion再起動したりしたら直った。