Platformio for VSCodeとCmake Toolsを両方使うときにCmake Toolsに怒られたときの謝り方


CMakeを未インストール状態でPlatformioによってインストールされるパッケージ中のCMakeを使っている場合,VSCodeからExtensionであるCMake Toolsというもののインストールが促される.
正直あんまり使わないが,とりあえず入れてみたらなんか小言を言われた.
ビルド等には特に問題がないのだけど,ずっと表示されるので謝り方を検索したがドンピシャなのが見つけられなかった.

たぶんそもそもCMake Toolsを入れなきゃいい問題のような気もする.

CMakeも自分で入れたりしてPATHが通っていればそれでいいのだろうけど,WSLじゃないWin10にCMakeをわざわざ入れたくなく,PATHもいじりたくなく,じゃあWSLのCMakeを指定すればいいじゃんと思ったけどPlatformIOが相変わらずRemote-WSLに対応していない.

そこでCMakeのにわか知識でちょっと設定いじったら許してもらえたので,その方法を共有する.

環境

Version: 1.52.1 (user setup)
Commit: ea3859d4ba2f3e577a159bc91e3074c5d85c0523
Date: 2020-12-16T16:34:46.910Z
Electron: 9.3.5
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: 8.3.110.13-electron.0
OS: Windows_NT x64 10.0.19042

インストールしているもの:

  • VSCode
  • VSCode のツール
    • Platformio for VSCode
    • CMake Tools
  • PlatformioでESP32 IDFのプロジェクトを作ると%USERPROFILE%\.platformio\packages\以下にCMake関連の実行ファイルもインストールされる
    • tool-cmake\bin\cmake.exe
    • tool-ninja\ninja.exe

他にもインストールされているが,必要な情報は多分こんなところ.

問題

これだけの状態でVSCodeのExtensionからの通知欄にCMake toolsからの以下のエラーがくることがある.
これはCMake ToolsのDefault設定としてCMakeの実行ファイルのある場所のPATHが通ってる前提でcmakeとコマンドしか記述されてないが,
CMakeをインストール,またはインストール場所にPATHを通していないため生じる.

実行可能ファイル""が正しくありません。インストールされていることと、設定に正しいパス(cmake.cmakePath)が含まれていることをご確認ください

これの解決として,VSCodeのCMake ToolsのExtensionのSettings上で上記のcmakeninjaを指定すると消えてくれる.
後々Win10に自分でCMakeとか入れたりとかWSLでCMakeいれたりするという事を考えると,
User設定として設定するよりも,Workspace設定として設定したらいいかもしれない.

ちなみにcmakeだけ解決しても今度はジェネレータが云々と小言を言われる.
このジェネレータというものが今回の場合ninjaなのでこれも設定必要.

設定方法

以下のいずれかの方法で設定し,VSCodeを再起動する.以下の例ではいずれもWorkspaceで設定している.

CMake ToolsのExtension Settingsで設定する方法:

  1. Disable Uninstallなどのボタンの隣にある歯車マーク>Extension Settings

  2. 以下のようにCmake PathGeneratorを設定

settings.jsonで設定する方法:

上記の方法でやれば勝手にsetteings.jsonに以下のような記述が生成される.自分で書いてもよい.
%USERPROFILE%使って指定しようと思ったけどそれだと怒られた.

settings.json
{
    "cmake.cmakePath": "C:/Users/<USERNAME>/.platformio/packages/tool-cmake/bin/cmake.exe",
    "cmake.generator": "C:/Users/<USERNAME>/.platformio/packages/tool-ninja/ninja.exe"
}