Mbedローカルコンパイルバトル 2回戦
がいよう
この記事は下記の続き。
https://drroot.page/wp/?p=234
mbed cliでmbed new testproj --mbedlib
と叩くと、Mbedライブラリを落としてくる段階で
ERROR: OS Error: プロセスはファイルにアクセスできません。別のプロセスが使用中です。
とか言われてコケるケース。
なにこれ
わからん。Windows 8.1環境だと上手く行ったのに、10環境だと上手く行かずコケた。
Powershellだからなのか、PCが違うからなのか、Windowsが違うからなのか?何も特定できなかった。
で、この作業を通さないとディレクトリが「Mbed化」しないのでコンパイル等できない。
いろんなIssuesを見るに、再起動したら直っただの管理者モードでやったら上手く行っただのあったが俺は全部あかんかった。
かんさつ
プロジェクトディレクトリを見てみると、mbedディレクトリの下に.bldディレクトリがあり、そこにサイズ0のZIPファイルがぽつんと生成されている。
mbed deploy -vvコマンドでフォルダのMbed化をやり直せるのだが、当然ファイルの解凍に失敗してAbortになる。
プロセスが使用中とか言われるってことはCLIの作りが良くなさそうだけど直す暇も無いね。
fix
ZIP生成に失敗して、それを解凍しようとしてコケるってことは、手元でいい感じのZIPを作って差し替えちゃえばいいんじゃねという話になる。
最終的な手順としては下記の感じでディレクトリのMbed化に成功する。
1. プロジェクト立ち上げ
mbed new projectname --mbedlib
でプロジェクト作成。プロセスが使用中とかでコケる。
2. 手動でライブラリ構築
https://os.mbed.com/users/mbed_official/code/mbed/archive/65be27845400.zip
↑まずこれを落としてきて解凍。大量のターゲット向けディレクトリが入っているので、いらない奴は全部削除しちゃっていい。
次にこのディレクトリのルートに下記の5つを落としてきてコピー。
https://os.mbed.com/users/mbed_official/code/mbed//raw-file/65be27845400/targets.json
https://os.mbed.com/users/mbed_official/code/mbed//raw-file/65be27845400/mbed.h
https://os.mbed.com/users/mbed_official/code/mbed//archive/65be27845400.zip/drivers/
https://os.mbed.com/users/mbed_official/code/mbed//archive/65be27845400.zip/hal/
https://os.mbed.com/users/mbed_official/code/mbed//archive/65be27845400.zip/platform/1
最終的にこんな感じになったらOK。
そしたらこのフォルダをZIPにする。Windowsなら右クリ→送る→ZIPでOK
3. 手動でライブラリをパッキング
さっき立ち上げたプロジェクトの中の、mbed/.bld/~.zipファイルと同じ名前にさっき作ったZIPを改名し上書き。
再度プロジェクトのルートディレクトリに戻り、mbed deploy
コマンドを叩く。以上!