MSBuild 2019忽略INCLUDE环境变量

时间:2020-03-03 23:25:54

标签: c++ windows visual-studio msbuild include

我正在使用两台装有Visual Studio 2019的计算机。一台具有社区版,另一台具有Pro版。

MSBuild的专业版完全忽略了INCLUDE环境变量,因此我要构建的项目(ICU)无法找到stddef.h。 stddef.h文件位于Windows Kits 10 ucrt目录中,该目录包含在INCLUDE env var中。

社区版不执行此操作。

当我使用/ v:diag选项构建项目时,我可以看到INCLUDE env var中定义的大部分内容都被添加到名为CAExcludePath的变量中。

这是INCLUDE env var: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;;

为什么会发生这种情况以及如何预防呢?

2 个答案:

答案 0 :(得分:1)

改用 IncludePath 环境变量。

set IncludePath=%INCLUDE%

IncludePath 在运行 msbuild 时不会被忽略/覆盖,我能够通过设置它成功编译我的项目/解决方案。

在我的机器上,设置 IncludePath 会覆盖 3 个本来会设置的路径。这 3 条路径在我的 %INCLUDE% 路径中有类似物(相同的头文件但用于不同版本),因此忽略/破坏/忽略这些似乎是安全的(实际上是谨慎的)。

答案 1 :(得分:0)

MSBuild 2019忽略INCLUDE环境变量

我认为您不应将这些路径设置为环境变量。对于C ++项目,默认情况下,VS无法识别系统环境变量中的库路径,这不是VS作业。

通常,您应该在VS IDE中设置额外的库路径。右键单击您的项目-> Properties-> Configuration Properties-> VC++ Directories-> Include DirectoriesProperties-> {{1 }}-> Configuration Properties-> C/C++。您可以参考this official document

但是,当我安装 Windows Kits工具时,默认情况下此路径包含在include路径中,您可以直接在代码中使用它。看到这个:

enter image description here

所以,当您安装 Windows Kits工具时,我担心您出了点问题。请按照this document安装正确的工具,然后在完成之前,请安装相关的扩展程序,这是Visual Studio 2019安装程序中集成该工具的最后一步。

我认为在安装扩展程序时,这些路径将自动包含在VS中,您可以直接使用它们。

enter image description here

此外,如果您不想安装此扩展程序,则可以按照上述步骤手动添加包含路径。

如果您已完成这些步骤,但仍然遇到相同的错误,我认为您应该检查环境并遵循以下建议:

1)关闭VS实例,删除Additional Include Directories.vsbin文件夹,重新打开项目,然后再次构建

VS Installer中的

2) do a repair

3)如果您的VS不是最新的,请更新您的VS,并且不要忘记同时更新操作系统。

希望这些帮助。