在 Windows 上的 “终端” 里,对于已经执行过 cmake -S . -B build -G Ninja
的工程,执行了
cmake --build build
出现了报错:
fatal error C1083: 无法打开包括文件: “stdio.h”: No such file or directory
原因是,当前 “终端” 使用的是普通的 PowerShell,并不知道 Visual Studio 2022 的头文件包含目录。
第一种解决方法
进入 “Developer PowerShell for VS”
再执行 cmake --build build
就不会报错了
第二种解决方法
我们深入一下:第一种方法到底是怎么做到的?Win11 的终端设置里,其实有对应的执行的命令。 我们查看 Developer PowerShell for VS 2022:
powershell.exe -NoExit -Command "&{Import-Module """C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"""; Enter-VsDevShell a2b5a303 -SkipAutomaticLocation -DevCmdArguments """-arch=x64 -host_arch=x64"""}"
也可以查看 Developer Command Prompt for VS2022, 也就是 cmd 版本的 vs2022 环境:
cmd.exe /k "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" -startdir=none -arch=x64 -host_arch=x64
因此在 build.cmd
中可以先加载 VS2022 开发环境,再执行构建: cmd 里的 call
相当于 linux shell 中的 source
:
call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" -arch=x64 -host_arch=x64
cmake -S . -B build -G Ninja -D CMAKE_BUILD_TYPE=Release
cmake --build build