💥

[memo] PlatformIO for VS Code をWindowsで使うメモ

2023/01/13に公開

まえがき

  • Linuxで開発していたが諸事情で環境をWindowsにしたときのメモ
  • すべての記述は 2023/01/12現在

ハマったポイント

ビルドが通らない

症状:
ビルド中に UnicodeDecodeError: 'cp932' codec can't decode byte 0x83 in position 568: illegal multibyte sequence: がでてビルドに失敗する。

解決策:
環境変数に PYTHONUTF8=1 を追加する。方法はシステム環境変数に追加してもいいし、platformioを呼び出すときに設定してもいい(方法は色々あると思うので)

LinuxでビルドできたのにWindowsではできない

症状:
タイトルの通り。コンパイルエラーになった

解決策:
独自に wifi.h というヘッダファイルを作っていたが、これがESP32標準のWire.hと同一視されてしまっていた。(Windowsはファイル名の大文字小文字を区別しないため)
回避するには、ディレクトリ単位で大文字小文字を区別するようにするか、ファイル名が重複しないように変更する必要がある。

https://learn.microsoft.com/ja-jp/windows/wsl/case-sensitivity

git cloneしただけなのに差分が表示される

症状:
git clone しただけの何も変更していない状態なのに、変更があると表示される。diffをとっても何も変更されていない。

解決策:
Windows以外の環境で chmod +x した場合、git上でも記憶されるが、Windowsには実行可能属性がないのでchmod +x されていないものとして扱うが、それをdiffとして検知はする。
git update-index --add --chmod=+x filename とすることでセットは可能な模様。ただ、もしWindows機が混ざるのであれば実行可能属性に頼らないほうが良いかもしれない。不意に属性が外れてしまった時にトラブりそうな気がする。

Discussion