我尝试创建一个ant目标,它从输入目录处理一些GLSL着色器,并将它们输出到另一个文件夹中。如果输出文件已经存在,我想避免处理。
我使用的可执行文件可以是输出目录参数,也可以是输出文件路径。
目前,我有:
<target name="optimize_programs">
<apply executable="TOOLS/glsl_processor" dir="." verbose="true" >
<srcfile/>
<arg value="-output_directory=OUTPUT/PROGRAMS/" />
<fileset dir="INPUT/PROGRAMS/OPENGLES2" includes="**/*.glfx" />
<flattenmapper />
</apply>
</target>
着色器处理正确,但问题是它们每次都会被处理,即使输出文件已经存在。
我怀疑这是因为flattenmapper不知道glsl_processor输出。
我试图告诉glsl_processor输出文件的位置:
<target name="optimize_programs">
<apply executable="TOOLS/glsl_processor" dir="." verbose="true" >
<srcfile/>
<targetfile/>
<fileset dir="INPUT/PROGRAMS/OPENGLES2" includes="**/*.glfx" />
<flattenmapper />
</apply>
</target>
但我不知道如何让targetfile指向输出文件夹。
有什么想法吗?
谢谢!
答案 0 :(得分:1)
答案其实很简单:
<target name="optimize_programs">
<apply executable="TOOLS/glsl_processor" dir="INPUT/PROGRAMS/OPENGLES2/" dest="OUTPUT/PROGRAMS" verbose="true" >
<targetfile/>
<srcfile/>
<fileset dir="INPUT/PROGRAMS/OPENGLES2" includes="**/*.glfx" />
<mapper type="glob" from="*.glfx" to="*.glfx"/>
</apply>
</target>
我只是缺少填充应用任务的 dest 属性。