LoginSignup
10
6

More than 5 years have passed since last update.

既存のArduinoプロジェクトをCLionで開発する

Last updated at Posted at 2019-02-09

環境はmacOS 10.13.6, Arduino IDE 1.8.8, CLion 2018.3.4

TL;DR

Arduino IDEをインストールしておく。
CLionにArduino, 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再起動したりしたら直った。

参考

10
6
0

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
10
6