トッツィーロール

忘れたころに記事を書く備忘録

VisualStudioでC++利用時にBOM無しUTF-8だと warning C4819 が発生する

githubから落としたCMakeプロジェクトをビルドするときに詰まったのでメモします。

VisualStudio 2017においてソースコードやその他、CMakeの場合はCMakeList.txtなどビルドに必要なファイルがBOM無しUTF-8で保存されている場合、UTF-8エンコードされていることを認識できなくなるためwarning C4819が発生し大量にエラーが出ました。
大量に発生するエラーは一見文字コードとは関係のないエラーでばかりであったため
原因がBOMの有無であることに気づくまで時間がかかりました。
解決策としては、BOM無しで保存されているファイルをBOM有に変換して保存すれば良いです。
プログラマ向けや高性能なエディタ、最近のWindowsではBOMの有無を変更して保存しなおせます。
今回では変換が必要になるファイルが大量にあったため、NonCodeNetというソフトウェアを使用しました。

VisualStudioの場合、C#はBOMの有無は影響しないらしく、C/C++の場合はBOM有でないと
コンパイルできないとのこと。