🐈
🪟【WSL×Claude Code】Linux上からWindowsネイティブアプリをビルドする!
はじめに:Linuxから.exeが作れるってホント?
最近人気のClaude Codeで開発してます。
開発は主にネイティブなWindowsアプリケーションをVisual Studioで開発しています。
Claude CodeがWSL上にあるため、現状ではWindows側から直接使えず、WSLから操作する形になります。
WSLだとMSBuildが直接呼び出せず、
-
Claude Codeでコード作成 -
Visual Studioビルド - エラーを再度
Claude Codeへ食わせる。 - 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