特定のマルチバイト文字を含むフォルダ内にC++Builderプロジェクトを保存すると、文字化けしたフォルダが作成されることがある
対象となるIDEのバージョン
- RAD Studio/C++Builder 10.3 Rio以降
対象となるC++コンパイラ
- Clangコンパイラ(bcc32c, bcc64)
問題
10.3 Rio以降で、特定のマルチバイト文字を含むフォルダ内にC++Builderのプロジェクト(.cbproj)を保存し、bcc32cやbcc64等のClangコンパイラでビルドすると文字化けしたフォルダが作成されることがあります。
例えば、「日本語テスト」というフォルダにプロジェクトを保存すると、下図のように
文字化けしたフォルダが作成されます。
10.2以降では、Clangコンパイラを利用している場合は、PCHのキャッシュファイルをプロジェクトフォルダの配下に"__astcache"というフォルダを自動作成し、その中に保存する仕様になっています。
10.3以降では、コード補完の高速化を計るため言語サーバー プロトコル サーバー(LSP)をサポートしており、IDE(Clangコンパイラも含む)から言語サーバーへのアクセスはcqueryという別プロセスを介して非同期で行われています。
cqueryとの連携にあたり両者で文字コードの統一が行われていない箇所が見つかり、キャッシュフォルダを作成するプロセスにも影響しています。これによってマルチバイト文字を含むパスがあると_astcacheフォルダを作成する際に文字化けが発生する問題が報告されています。 以下のケースは、本件に関連した問題の一つです。
ケース番号 | タイトル |
---|---|
RSP-25592 | Code insight doesn't work when project folder name has Chinese chars |
なお、bcc32(従来のBorlandコンパイラ)を利用している場合は、このフォルダは作成されないため、同じ症状は発生しませんが、旧バージョンのC++Builderのプロジェクトを移行し、 Clangコンパイラ(bcc32cあるいはbcc64)に切り替えると、同様の問題が発生いたしますので、ご注意ください。
解決
この問題は、10.4.2で修正済みです。
PCHのキャッシュを保存する機能は、IDEのオプション等で無効化することはできないため、10.3.x、10.4および10.4.1のClangコンパイラを利用する場合は、マルチバイト文字を含まない半角英数字のパスにC++Builderのプロジェクトを保存してください。