首页 > 解决方案 > 指定目录以在 vcxproj 文件中查找 stdafx.h

问题描述

我一直在从头开始制作一个 vcxproj 文件,以更好地了解 msbuild。我的项目结构基本上是这样的:

$(MSBuildProjectDirectory)\src\main.cpp
$(MSBuildProjectDirectory)\src\stafx.cpp    
$(MSBuildProjectDirectory)\include\stdafx.h

我假设在我的 vcxproj 文件中定义它:

<ItemGroup>
    <ClInclude Include="$(MSBuildProjectDirectory)\include\stdafx.h" />
</ItemGroup>

将允许我调用#include "stdafx.h"main.cpp而不必指定相对路径(例如#include ..\include\stdafx.h)。但是当我构建我的项目时,我收到一条失败的消息,说 msbuild 找不到stdafx.h

"C:\Projects\SDL2plusplus\SDL2PlusPlus.vcxproj" (default target) (1) ->
(ClCompile target) ->
  C:\Projects\SDL2plusplus\src\stdafx.cpp(4): fatal error C1083: Cannot open include file: 'stdafx.h': No such file or direc tory [C:\Projects\SDL2plusplus\SDL2PlusPlus.vcxproj]

有没有办法可以在 vcxproj 文件中指定包含目录,以避免将手动路径放在我的 #include 指令中?

标签: c++msbuild

解决方案


这是一个属于 ItemDefinitionGroup 的 ClCompile 任务:

<ItemDefinitionGroup>
    <ClCompile>
        <!--<PrecompiledHeader>Use</PrecompiledHeader>-->
        <Optimization>Disabled</Optimization>
        <AdditionalIncludeDirectories>$(MSBuildProjectDirectory)\include;C:\vs_dev_lib\SDL2-2.0.8\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>


推荐阅读