windows vc++ 如何使用 UniversalCRT_IncludePath 以及如何使其在 cl.exe 中工作

windows vc++ how to use UniversalCRT_IncludePath and How to make it work in cl.exe

我使用 windows 10 作为测试服务器并尝试从 python 和 C++ 的源代码构建。 我安装了 vcbuild 2015 by choco choco windows package manager

当我尝试构建源时,我发现错误。

E:\downloads\Twisted-17.1.0>cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DWIN32=1 -IC:\Python36\include -IC:\Python36\include /Tcsrc/twisted/test/raiser.c /Fobuild\temp.win-amd64-3.6\Release\src/twisted/test/raiser.obj
raiser.c

c:\python36\include\pyconfig.h(59): fatal error C1083: Cannot open include file: 'io.h': No such file or directory

我在我的vc++包含路径中找不到io.h: 但是根据文章:Universal CRT

我发现 io.h 文件在我的 C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt

然后我发现我的通用 CRT 是空的

C:\WINDOWS\system32>set UniversalCRT_IncludePath
Environment variable UniversalCRT_IncludePath not defined

然后我定义那个环境变量:

E:\downloads\Twisted-17.1.0> set UniversalCRT_IncludePath="C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt"

然后我再次尝试编译源码,还是报错:

E:\downloads\Twisted-17.1.0>cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DWIN32=1 -IC:\Python36\include -IC:\Python36\include /Tcsrc/twisted/test/raiser.c /Fobuild\temp.win-amd64-3.6\Release\src/twisted/test/raiser.obj
raiser.c

c:\python36\include\pyconfig.h(59): fatal error C1083: Cannot open include file: 'io.h': No such file or directory

任何人都知道如何使 UniversalCRT_IncludePath 在命令行环境中工作,cl.exe 如何尝试使用该变量并使其包含默认的 c++ 路径。

UniversalCRT_IncludePathcl.exe 没什么特别的。

通用 CRT 的 New-Project 向导模板使用同名的 MSBuild 变量(与环境变量或 shell 变量不同)来计算 command-line传递给 cl.exe.

因为您是手动调用编译器,所以您应该只在该目录中添加一个 /I 开关,而不用担心编译器无论如何都不会查找的任何环境变量。