Visual Studio Code で Arduino プログラムを書く場合の設定、結局どうすればいいのかよく分からないなりに。
前提条件としては、Arduino IDE (今は 1.8.12)のインストールと Visual Studio Code のインストール、そして、VSC の Arduino Extension(Microsoft製)の導入が済んで、さらに arduino.path が設定してあること。
外部ライブラリは IDE のスケッチの保存場所のlibrary フォルダに入ることになるけれど、これは IDE で設定(インストール)した方がいいかな。
つぎに、Visual Studio Code 側ではスケッチごとにいくつかの設定が必要。
1. ボードタイプ
2. シリアルポート
3. setting.json
4. c_cpp_properties.json
まず、ボードタイプとシリアルポートは、スケッチを VSC で開いた状態のウインドウの一番下の <Select Board Type> と <Select Serial Port> で選択できる。これらを選択すると .vscode/arduino.json というファイルに設定が書き込まれるのでそのまま使えばいい。また、 .vscode/c_cpp_properties.json というファイルも同時に作られる。
.vscode/c_cpp_properties.json にはデフォルトでいくつかの設定が書き込まれているが、これは少し変更した方がよさそう。
• name はそのままでいいけど、気分的に "Arduino"とかに変更
• oncifgurations → includePath はあとで intelliSenseEngine を "Tag Parser" にすると関係なくなるけど、まぁほうっておいてもいいかな。
• configurations → forcedInclude もそのままで。
• あとで settings.json で intelliSenseEngine を "Tag Parser" に変更するので、それ用に configurations → browse → path を includePath 相当に設定。
結果として .vscode/c_cpp_properties.json はだいたい下のようになる。
{
"configurations": [
{
"name": "Arduino",
"includePath": [
"C:\\Program Files (x86)\\Arduino\\tools\\**",
"C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\**"
],
"forcedInclude": [
"C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\cores\\arduino\\Arduino.h"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"${workspaceFolder}/**",
"C:/Program Files (x86)/Arduino/**",
"C:/Users/rok/Documents/Arduino/libraries/**"
]
}
}
],
"version": 4
}
path の区切は "/" でも "\" でもいいようだけれど、今は "/" にしておいた方がいろいろ面倒が少なそうな気がする。エスケープとかあんまり考えずにすむし。
.vscode/setting.json はなにもしないと作られないので、自分で作る。このファイルでは intelliSenseEngine を "Tag Parser" に変更する。 これは、グローバルに変更してもいいけれど、Arduino 以外のプログラムを書くときにも影響してしまうので、各スケッチごとに設定する方がいいと思う。
{
"C_Cpp.intelliSenseEngine": "Tag Parser"
}
コンパイル時にはエラーにならないけれど、VSC が WProgram.h が見つからないと言ってくるのはどうも消しようがないのと全く実害がないので気にする必要はない。
.vscode/c_cpp_properties.json と .vscode/setting.json はスケッチにほぼ依存しないので、ど新しいスケッチを書き始めるたびにこかに置いておいたものをコピーすればいいと思うけれど、これ自動でやってくれるような方法ありそう。Visual Studio Code 全然分からないので……。