API set "4" is not valid.エラーと対処方法

久しぶりにAzure Sphereサンプルコードをビルドしてみたところ、CMakeでAPI set "4" is not valid.というエラーが発生しました。

f:id:matsujirushix:20200222173312p:plain

なんだろう???手元のサンプルコードを壊してしまったかな?
気を取り直して、githubからクローンし直してみても状況変わらずorz

うーむ、ちゃんと調べて見ることに。

2> [CMake] CMake Error at C:/Program Files (x86)/Microsoft Azure Sphere SDK/CMakeFiles/AzureSphereToolchainBase.cmake:38 (MESSAGE):
2> [CMake]   API set "4" is not valid.  Valid API sets are: ["3", "3+Beta1909"]

API setの"4"は不正で、33+Beta1909を使えと言っています。

サンプルコードAPI setは、CMakeSettings.jsonで指定していて、4です。4を使おうとしているのは意図通り。

f:id:matsujirushix:20200222174104p:plain

では、有効なAPI setsの方はというと、、、
エラーメッセージをよく見ると、AzureSphereToolchainBase.cmakeの38行目が関係しているようで、このファイルを見ると、なんとなくSDKのSysrootsフォルダからAPI setを取ってきていることがわかります。

f:id:matsujirushix:20200222175318p:plain

SDKのSysrootsフォルダを見ると、33+Beta1909ってことで、まぁエラーになるわねといった感じ。

f:id:matsujirushix:20200222175558p:plain

API setとAzure Sphere OSの対応は、ちょっと分かりにくいのですがここに書かれていて、

docs.microsoft.com

19.09で3。20.01で4

あれ??手元の環境、20.01にアップグレードし忘れ!?
そんな凡ミスか??と思いましたが、azsphereコマンドで確認すると20.01になっていました。

f:id:matsujirushix:20200222180619p:plain

うむむ、、、なんだろう?

もしかして、SDKがアップデートされているのでは?と思い、Azure Sphere SDK for Visual Studioからダウンロードしてみたところ、ファイルバージョンが上がっていました。

左が以前にダウンロードしたSDK、右が今日ダウンロードしたSDK
f:id:matsujirushix:20200222181224p:plain

では、今日ダウンロードしたSDKをインストール。

f:id:matsujirushix:20200222181417p:plain

インストールした結果、4のフォルダができました。

f:id:matsujirushix:20200222182347p:plain

azsphereコマンドのバージョンも、しれっと20.1.6.56047から20.1.6.56107に上がっていました。

f:id:matsujirushix:20200222182537p:plain

無事、サンプルコードをビルドできるようになりました。

f:id:matsujirushix:20200222182945p:plain

今回調べていて気付いたのですが、、、
docsからAzure SphereのRelease Notesが消えている、、、ミスかな?それとも意図的?
何気にSDKがマイナーバージョンアップしてたし。

組み込み用途なので、、、バージョンが上がったこと、そのときの差異はきっちりと情報公開してもらいたい。