输入 :可选属性。 形成此目标输入的文件。多个文件由分号分隔。将文件的时间戳与输出中文件的时间戳进行比较,以确定目标是否是最新的。有关更多信息,请参阅增量构建,如何:增量构建和转换。
我将文件与分号分开,如文档所述。
此外,在使用这些文件的命令(aka recipe)中,它们被消耗了!
问题
为什么MSBuild
告诉我没有输入存在?
XML是:
<Target Name="micropython_prebuild_create_qstrdefs" Inputs="$(uP_PrebuildSrc)" Outputs="$(uP_GenHdrFolder)\qstrdefs.generated.h">
输出结果为:
输入文件“Source \ py \ _vm.c; Source \ py \ vstr.c; Source \ py \ warning.c” 不存在。
更新
我发现日志看起来在哪里 的 XML :
<Target Name="micropython_prebuild">
<PropertyGroup>
<PreBuildProperties>
uP_PrebuildPyExe="$(ProjectDir)\Source\micropython\py\make_prebuild_wrapper.exe";
uP_GenHdrFolder=$(ObjectFolder)\genhdr;
uP_QSTR_GEN_EXTRA_CFLAGS=-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB -DN_ARM -DN_XTENS;
uP_SrcFolder=$(ProjectDir)\Source\micropython;
uP_MpyCrossExe="$(ProjectDir)\Source\micropython\mpy-cross\mpy-cross.exe";
uP_PrebuildSrc=$(CppFiles.Replace('Source\micropython\minimal\frozen_mpy.c;',''));
</PreBuildProperties>
</PropertyGroup>
<MakeDir Directories="$(ObjectFolder)\genhdr" />
<MSBuild
Projects="$(MSBuildProjectFile)"
Condition="'' == ''"
Targets="micropython_prebuild_mpversion"
Properties="$(PreBuildProperties)"
/>
...
日志:
Task "MSBuild" (TaskId:7)
Task Parameter:Projects=ATI_micropython.vcxproj (TaskId:7)
Task Parameter:Targets=micropython_prebuild_mpversion (TaskId:7)
Task Parameter:
Properties=
uP_PrebuildSrc=Source\micropython\extmod\machine_i2c.c;Source\micropython\extmod\machine_mem.c;
Global Properties: (TaskId:7)
uP_PrebuildSrc=Source\micropython\extmod\machine_i2c.c%3bSource\micropython\extmod\machine_mem.c%3b
进行测试,如果我更改了行uP_PrebuildSrc=$(CppFiles.Replace('Source\micropython\minimal\frozen_mpy.c;',''));
到
uP_PrebuildSrc=$(CppFiles);
我 NOT 在%3b
中获得了奇怪的uP_PrebuildSrc
字符。
为什么会这样?
答案 0 :(得分:0)
带有AppendFormat()的StringBuilder类也会给出错误的结果,所以我想这不仅仅是您所建议的Replace函数的问题。 使用内联任务通过以下操作重现了该问题:
ssh root@app.xxx.com
cd /home/xxx/source/
这是试图在C ++ Linux项目中使用$(AdditionalSourcesToCopyMapping)。 然后,在输出日志中,我看到我的FileMap用“%3b”字符代替了“;”。 有人怀疑为什么会发生这种情况吗?