【发布时间】:2020-03-03 23:25:54
【问题描述】:
我正在使用两台装有 Visual Studio 2019 的机器。一台是社区版,另一台是专业版。
MSBuild 的专业版完全忽略了 INCLUDE 环境变量,所以我正在尝试构建的项目(ICU)找不到 stddef.h。 stddef.h 文件位于 Windows Kits 10 ucrt 目录中,该目录包含在 INCLUDE env var 中。
社区版不这样做。
当我使用 /v:diag 选项构建项目时,我可以看到 INCLUDE env var 中定义的大部分内容都添加到名为 CAExcludePath 的变量中。
这是 INCLUDE 环境变量:INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\include;;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\atlmfc\include;;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\VS\include;;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt;;;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\VS\UnitTest\include;C:\Program Files (x86)\Windows Kits\8.1\Include\um;C:\Program Files (x86)\Windows Kits\8.1\Include\shared;C:\Program Files (x86)\Windows Kits\8.1\Include\winrt;;
这是 CAExcludePath:CAExcludePath=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\atlmfc\include;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt;;C:\Program Files (x86)\Windows Kits\8.1\Include\um;C:\Program Files (x86)\Windows Kits\8.1\Include\shared;C:\Program Files (x86)\Windows Kits\8.1\Include\winrt;;
为什么会发生这种情况,我该如何预防?
【问题讨论】:
-
您关注this document 安装Windows Kits 工具了吗?通常,您应该在 VS IDE 而不是环境变量中设置这些路径。在我这边,当我按照安装程序的步骤完成最后一步安装Windows Driver Kit时,我可以直接在代码中使用它,因为它已经包含在
Include Directories中。自动 -
我在 Visual Studio 安装程序中安装了必要的工具包。这就是为什么它们被 VS 的本机工具命令提示符添加到 INCLUDE 路径的原因(请参阅我发布的 INCLUDE env var 中的 Kit 目录)。但是我没有安装 Windows Driver Kit。 ICU 项目不需要这些。但是如果 WDK 改变了 VS 的行为,所以它不会忽略 INCLUDE var,那么我会试一试。
标签: c++ windows visual-studio msbuild include