🐈

🪟【WSL×Claude Code】Linux上からWindowsネイティブアプリをビルドする!

に公開

はじめに:Linuxから.exeが作れるってホント?

最近人気のClaude Codeで開発してます。
開発は主にネイティブなWindowsアプリケーションをVisual Studioで開発しています。
Claude CodeがWSL上にあるため、現状ではWindows側から直接使えず、WSLから操作する形になります。
WSLだとMSBuildが直接呼び出せず、

  1. Claude Codeでコード作成
  2. Visual Studioビルド
  3. エラーを再度Claude Codeへ食わせる。
  4. 1へ戻る

みたいな使い方で大変不便でした。
色々試行錯誤してみたところ、PowerShellを経由すれば、WSLからでもネイティブWindowsアプリがビルドできるようになりました。 🚀


🌟 ゴール:WSLからPowerShellを叩いて.exeやテストを自動ビルド・実行!

🧩 構成のイメージ:

項目 内容
開発環境 WSL + Claude Code(Linux側)
ビルド環境 Visual Studio(MSBuild)(Windows側)
テスト実行 VSTest(Windows側)
コード例 某作のプロジェクト「my_native_app」

🔨 PowerShell経由でプロジェクトをビルドしよう

.vcxproj(単体プロジェクト)のビルド例:

powershell.exe -Command "& 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe' C:/dev/my_native_app/src/my_native_app.vcxproj"

.sln(ソリューション全体)のビルド例:

powershell.exe -Command "& 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe' C:/dev/my_native_app/my_native_app.sln"

🔍 ポイント:

  • パスにスペースが含まれる場合はシングルクォートで囲んでOK
  • Visual Studio のバージョンやEditionにも注意

🧪 VSTestでユニットテストを走らせよう!

powershell.exe -Command "& 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow\\vstest.console.exe' C:/dev/my_native_app/build/x64/Debug/my_native_app_tests.dll /platform:x64 /inIsolation /Logger:trx"

🧐 powershell.exe経由でvstest.console.exe を使って、テストを行い、trxファイルをClaude Codeにチェックさせることで継続的な開発が可能となります。


CLAUDE.md への記載

こんな感じで記載しています。

### WSL環境からのビルドコマンド

WSL環境からWindows上のVisual Studio MSBuildを使用する場合:

```bash
# プロジェクト単体ビルド
powershell.exe -Command "& 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe' C:/dev/my_native_app/src/my_native_app.vcxproj"

# ソリューション全体ビルド
powershell.exe -Command "& 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe' C:/dev/my_native_app/my_native_app.sln"
```

### WSL環境からのテスト実行

WSL環境からWindows上のVSTestを使用する場合:

```bash
powershell.exe -Command "& 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow\\vstest.console.exe' C:/dev/my_native_app/build/x64/Debug/my_native_app_tests.dll /platform:x64 /inIsolation /Logger:trx"
```

# テスト結果確認
# TestResults/xxx.trx (最新のファイルを確認)

🧭 まとめ:Claude Codeで書いて、PowerShellで走らせよう!

  • WSL経由でClaude Codeを実行しつつ、PowerShell経由でWin32アプリをビルドできる
  • .vcxproj.sln を直接MSBuildに渡せばOK
  • テストもVSTestでバッチリ!

おまけ

Claude CodeからC/C++ソースコードを修正させるとUTF-8で保存されてしまうので、CLAUDE.mdに以下を追加してSJIS保存させています。

## 文字コード変換(絶対厳守)

**重要**: C/C++ソースコード修正後は、必ず以下のコマンドを実行してShift_JISに変換すること:

```bash
nkf -s -Lw --overwrite <変換したいファイル名>
```

- `.cpp`, `.c`, `.h`, `.hpp` ファイルはすべてShift_JIS(CP932)で保存
- UTF-8からShift_JISへの変換は必須実行項目
- この処理を忘れた場合はペナルティの対象となる

Discussion