Windows vC++, как использовать UniversalCRT_IncludePath и как заставить его работать в cl.exe

Я использую Windows 10 в качестве тестового сервера и пытаюсь собрать из исходного кода python & C++. Я установил vcbuild 2015 с помощью менеджера пакетов windows choco choco

Когда я пытаюсь построить источник, я нахожу ошибку.

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

Я не могу найти io.h в моем пути включения vC++: Но согласно отрывку: Универсальный CRT

Я обнаружил, что файл io.h находится в моем C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt

Тогда я обнаружил, что мой универсальный ЭЛТ пуст

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\10\Include\10.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++, включая path.

1 ответ

Решение

Там нет ничего особенного UniversalCRT_IncludePath в cl.exe,

Переменная MSBuild с таким именем (не то же самое, что переменная среды или переменная оболочки) используется шаблонами мастера New-Project для Universal CRT для вычисления командной строки для передачи в cl.exe,

Поскольку вы вызываете компилятор вручную, вы должны просто добавить /I переключаться с этим каталогом и не беспокоиться ни о какой переменной окружения, которую компилятор не ищет в любом случае.

Другие вопросы по тегам