Visual Studio CodeのCMake Tool拡張には、snap版のCMakeを使えない問題があります。これに引っかかって随分苦労した後、解決したので以下にその解決方法を書いておきます。
問題
最近作業用のUbuntuをバージョン16.04から20.04にアップデートしました。
さらに同時期に作り始めたプログラムを試しにVSCodeで管理することにしました。これまでは組み込みプログラムばかりでしたのでEclipseで管理していましたし、たまに書くshell scriptはコマンドラインのgitでリポジトリと同期していました。VSCodeはこれまでエディタとしてしか使っていなかったわけです。
cmakeもほとんど経験がないのですが、とりあえずコマンドラインでビルドできるようになりました。で、試しにVSCodeでcmakeを使ったところいきなりエラーです。
- Ubuntu 20.04
- VSCode 1.51.1
- CMake Tools 1.5.1
- CMake 3.19.0
上のスクリーンショットは切れていますが、/snap/bin/cmake が見つからないと言っています。いや、あるんですよ。だって、コマンドラインからビルドできるんですから。
コミュニティの反応
当初、Ubuntuが悪いのかVSCodeが悪いのかわからずに検索にも苦労しましたが、最後には「snap版のcmakeを使った時にcmake toolsが異常動作するので対応してほしい」というイシューにたどり着きました。
問題はまだ解決していません。ここのイシューを読んだ感じでは、snapのリンクの貼り方が特殊なため、VSCodeから扱えないのではないかと思われます。実際、調べてみると/snap/bin/cmakeはリンクであり、そのリンク先は/usr/bin/snapとなっています。んんん?
snapが変な管理の仕方をするから悪いのか、Cmake Toolsのサブプロセス呼び出し方法が悪いのかは、私にはわかりません。
対応策
先のイシューの情報をもとに、CMake Toolsを設定したところ、問題なく動作するようになりました。拡張の中からCMake Toolsを選び、設定画面を開きます。検索バーから “path”を入力すると、CMake Pathの入力フィールドが現れます。ここに /snap/cmake/current/bin/cmake と入力すれば設定は終わりです。
VSCodeからビルドできるようになります。
まとめ
イシューのステータスを見るに、まだしばらくこの問題は残りそうです。
我が世の春を謳歌している感のあるVSCodeですが、どうも基盤になっているjavascriptやnodejsといった技術が透けて見えることが多いです。わからないことを検索しても、はてVSCodeの話を読んでいるのnodejsの話を読んでいるのかわからない、ということも多いです。
使いこなすのは難しそうです。