make和ant的真正用处是什么?

时间:2010-01-26 16:07:52

标签: java c++ c ant makefile

虽然我正在使用C / C ++和Java进行开发,但我只需创建一个可以完成所有操作的compile.bat脚本,这对我来说很好。我为什么要使用make?为什么我应该使用ant?

8 个答案:

答案 0 :(得分:22)

假设您有1000个源文件并且只更改其中一个。使用.bat脚本,您将不得不重新编译该批次,并使您重新编译更改的那个。这可以节省相当多的时间(大项目的阅读时间)。

更好的是,如果更改其中一个头文件,make将仅重新编译使用该头文件的源文件。

这两个主要特征意味着make及其后代用于所有使用编译语言的严肃软件开发。

答案 1 :(得分:4)

使用构建文件,您可以自动化,而不仅仅是编译代码;您可以运行单元测试,收集指标,打包构建工件以进行部署等。

Ant的一个优点是它激发了其他平台的工具--Nnt for .NET,Phing for PHP。他们做同样的事情,并以同样的方式工作。

答案 2 :(得分:2)

只要你在Windows下为自己开发:适合自己。

但是如果你开始与其他人一起开发Ant和Make是描述你的应用程序构建方式的标准。

答案 3 :(得分:2)

可能有以下几个原因: - 因为你不是项目中唯一的一个 - 因为有人在你离开时必须关心构建脚本 - 因为compile.bat脚本不是平台独立的 - 因为项目的政策定义了构建技术,例如,对于整个企业

我最近读了一篇有趣的article about build tools。对于你来说,只有第一部分可能有任何意义(在maven抨击开始之前)

答案 4 :(得分:1)

首先,make和ant都会跟踪哪些文件已被编译,因此如果不需要,它不会重做。

答案 5 :(得分:0)

您获得了一些平台中立性(如何在我的linux-box上运行批处理脚本)。但更重要的是:构建工具支持依赖解析。脚本缺乏这个并且必须自己构建它。

假设你有目标A,B和C. B和C都依赖于A.在脚本中他们调用子程序A.如果你现在创建一个新的目标D,它取决于B和C,而不是你将执行两次。构建工具识别这一点并仅执行一次。

因为这种情况对于涉及编译,构建分发,测试,构建文档等的任务来说是典型的。构建工具对于软件开发很有用。

答案 6 :(得分:0)

我相信可以使用.bat文件 - 或bash或其他版本的shell脚本 - 来完成Ant可以做的所有事情。但是在Ant中做很多事情要容易得多......

  • 创建/移动/删除文件和目录
  • 应用过滤器令牌
  • 运行单元测试
  • 正确包装罐子,拉链或战争

除了编译时,许多项目还需要做这些事情。

Ant也与平台无关,因此您可以与使用其他操作系统的人协作。

但为什么要停在Ant? Apache Maven提供了更具吸引力的功能。

答案 7 :(得分:0)

当与自动构建系统或持续集成一起使用时,Make和Ant真正发挥作用。

生产构建,测试构建和开发构建的要求通常不同,在多人团队中,不同的开发人员以不同的方式设置他们的开发环境。

具有明确的构建过程解决了“在我的机器上工作”(WOMM)问题,这些问题出现在应用程序需要构建在与其开发的机器不同的机器上时。当一个开发人员检查不能在另一个开发人员的计算机上运行的代码时,它是最终的仲裁者。如果构建过程不生成工作软件,则第一个开发人员的签入被破坏。如果它确实生成了工作软件,那么第二个开发人员的开发环境就会被破坏 - 除非另有证明。