在ant中使用文件集应用映射程序

在ant中使用文件集应用映射程序,ant,Ant,这似乎是一个常见的问题,但我还没有找到重复的答案 我有一堆对象文件,如果其中任何一个文件发生了更改,它们都需要传递给linker exec。我有一个apply任务,如下所示: ,但我希望我可以通过指定一个额外的文件集或类似的东西来完成它。您的问题不是任务,而是。与大多数构建系统一样,Ant试图通过不处理未更改的文件来节省时间。映射程序正在将源文件(后缀为*.o的文件)映射到目标文件(后缀为myapp.exe的文件)。这正是你想要的 您可能需要使用子实体指定输出文件名: <apply ex

这似乎是一个常见的问题,但我还没有找到重复的答案

我有一堆对象文件,如果其中任何一个文件发生了更改,它们都需要传递给linker exec。我有一个
apply
任务,如下所示:



,但我希望我可以通过指定一个额外的
文件集或类似的东西来完成它。

您的问题不是
任务,而是
。与大多数构建系统一样,Ant试图通过不处理未更改的文件来节省时间。映射程序正在将源文件(后缀为
*.o
的文件)映射到目标文件(后缀为
myapp.exe
的文件)。这正是你想要的

您可能需要使用
子实体指定输出文件名:

<apply executable="link.exe">
    <arg value="/out"/>
    <arg value="myapp.exe"/>
    <fileset dir="obj">
       <include name="**/*.o"/>
    </fileset>
</apply>

谢谢您的第一个代码片段将导致
link.exe
在每个构建上运行(正如我相信您在讨论
最新版本
时提到的)。正如我的问题所暗示的,我已经用
最新任务实现了一个解决方案,但是如果可能的话,我更愿意使用
apply
。由于
apply
既支持
uptodate
检查(通过
mapper
)又支持
文件集
,我原以为它可以在没有明确的
uptodate
任务的情况下完成?
<uptodate property="needs.linking"
     targetfile="myapp.exe">
    <srcfiles dir="obj">
        <include name="**/*.o"/>
    </srcfiles>
</uptodate>

<target name="linker"
    if="needs.linking">
    <apply executable="link.exe">
      ...
</target>