0

我有一个 VisualC++ 项目作为 vcxproj,我需要有条件地包含 ProjectDependency 元素之一。

我尝试了几种不同的方法,但似乎没有任何效果。

在我的 fubar.vcxproj 我有以下内容:

<ItemGroup Condition="'$(BuildRaster)'=='True'">
    <ProjectReference Include="Raster.vcxproj" Condition="'$(BuildRaster)'=='True'">
      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
      <Private>false</Private>
      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
      <LinkLibraryDependencies>true</LinkLibraryDependencies>
      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
    </ProjectReference>
</ItemGroup>

在我使用的收集器 .proj 文件中,我有这个

<ItemGroup>
    <FUBARProject Include="$(Proj_Root)\fubar.vcxproj"/>
</ItemGroup>
<Target Name="BuildWithRaster">
    <MSBuild Projects="@(FUBARProject)" Properties="ExportIncludes=true;Constants=IncludeRaster;BuildRaster=True"/>
</Target>
<Target Name="BuildWithoutRaster">
    <MSBuild Projects="@(FUBARProject)" Properties="ExportIncludes=true;Constants=ExcludeRaster;BuildRaster=False"/>
</Target>

实际上有超过一百个依赖项目,所以这只是一个被删掉的版本的片段。有条件的 ProjectReference 似乎适用于 csproj,但不适用于 vcxproj。我尝试将条件放在 ProjectReference 和 ItemGroup 元素上;两者都没有改变。

4

1 回答 1

0

我发现了我的问题,条件子句在 vcxproj 文件中确实有效。实际上,我有一个不同的依赖项,它引入了同一个项目,直到我在构建中打开详细程度时才知道。

于 2018-02-09T00:49:26.087 回答