mcpp 在 Windows 上查找 import std 的 MSVC STL std.ixx 时硬编码了
C:\Program Files\Microsoft Visual Studio\2022,导致非标准 VS 安装找不到。
新建 src/toolchain/msvc.cppm 模块,提供 MSVC/Visual Studio 发现能力。
-
vswhere.exe — 微软官方 VS 安装发现工具,最可靠
- 路径:
C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe - 命令:
vswhere -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath - 返回: VS 安装路径如
C:\Program Files\Microsoft Visual Studio\2022\Community
- 路径:
-
环境变量 —
VSINSTALLDIR、VS170COMNTOOLS(2022)、VS160COMNTOOLS(2019)- 从
VSINSTALLDIR直接得到 VS 根目录 - 从
VS*COMNTOOLS向上推算
- 从
-
固定路径扫描 — 兜底方案
C:\Program Files\Microsoft Visual Studio\{2025,2022,2019}\{Enterprise,Professional,Community,BuildTools}C:\Program Files (x86)\Microsoft Visual Studio\{2019,2017}\...
从 VS 安装路径推算:
<VS_ROOT>/VC/Tools/MSVC/<version>/modules/std.ixx
<version> 通过遍历 VC/Tools/MSVC/ 目录取最新版本。
export module mcpp.toolchain.msvc;
import std;
export namespace mcpp::toolchain::msvc {
// 查找 VS 安装路径(返回最新版本)
std::optional<std::filesystem::path> find_vs_install_path();
// 查找 MSVC 工具链根目录 (VC/Tools/MSVC/<ver>/)
std::optional<std::filesystem::path> find_msvc_tools_dir();
// 查找 std.ixx 模块源文件
std::optional<std::filesystem::path> find_std_module_source();
// 查找 cl.exe(未来 MSVC 工具链支持用)
std::optional<std::filesystem::path> find_cl();
}- 新建
src/toolchain/msvc.cppm src/toolchain/clang.cppm—enrich_toolchain中的硬编码 VS 路径改为调用msvc::find_std_module_source()