【发布时间】:2019-10-22 05:44:32
【问题描述】:
<Target Name="Build">
...
<MSBuild
Projects="$(MSBuildProjectFile)"
Condition="'@(FilesToCompile)' != ''"
Targets="buildcpp"
Properties="CPPFILE=%(FilesToCompile.FullPath);OBJFILE=$(ObjectFolder)\%(FilesToCompile.Filename).doj;IncludeDirs=$(IncludeDirs)"
/>
FilesToCompile 是所有 .cpp 文件中的一个 ItemGroup。
当我查看构建日志时,它显示目标 buildcpp 正在为 CPPFILE 中的每个文件运行。
我知道这是我在逻辑上想要发生的事情,但我的问题是,元素 <MSBuild> 或 MSBuild 架构的 规则 导致任务 MSBuild 为每个值执行CPPFILE?
简而言之,文档中的什么地方说明了会发生什么?
我想传递整个 ItemGroup 一次,而不是为每个项目调用一次 MSBuild 目标。
【问题讨论】:
-
@HansPassant 所以如果我想传递整个
ItemGroup并且只传递一次,我必须先将其分配给Property,然后将其设置为等于<MSBuild Properties属性? -
@HansPassant 我想一次性传入
ItemGroup,而不是每个项目调用一个任务。
标签: msbuild