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
переключаться с этим каталогом и не беспокоиться ни о какой переменной окружения, которую компилятор не ищет в любом случае.