0

我尝试创建一个 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 指向输出文件夹。

任何想法?

谢谢!

4

1 回答 1

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属性。

于 2013-10-22T12:11:47.837 回答