2016-09-19 54 views
0

我们有一个我目前试图清理和简化一点(非常令人费解)构建系统。它以Perl脚本为中心,该脚本设置各种相互依赖的环境变量,然后启动make。调用make的目标取决于传递给Perl脚本,一些其他环境变量和当前月相的参数。使用假目标,因为目标别名

被窃听我的事情是,我们的makefile文件包含了太多的假目标,从而导致不断被重建,即使目标虽然没有必要,这是一个巨大的浪费时间。目标(直接或间接)依赖于大量虚假目标,并且由于虚假目标总是被视为“过时”,因此很多内容都会不必要地更新。

为什么有这么多假目标的原因是我们的makefile不会直接调用,而是始终通过我之前提到的Perl脚本来调用,并且通过伪目标,Perl脚本不必知道确切的路径名用户想要更新的特定目标。

我的本意是没有目标依赖于任何虚假的目标了。我想将所有假目标转换为具体的非假目标,以便每个目标的依赖树只包含非假目标。然后,使个人目标的Perl脚本方便,我将添加一个新的假目标每一个这些,什么也不做,除了提到的具体目标作为其唯一的依赖,只是打印出它的构建配方的回声。

我不太了解make,所以我想问问这是否会按预期工作,否则会产生意想不到的后果。

回答

2

这将是预期的(并且是做正确的方式)的工作,只要你第一创建所有的具体目标,让他们根据其他具体的目标,并然后抽象的名字远离使用假目标与具体的目标作为先决条件。换句话说,具体的目标应该自己站起来,而不是依靠幽默。

顺便问一下,你也可以,如果你想(不需要一个“虚拟” echo)离开配方空。

+0

呵呵,不知道我能有一个目标,没有任何秘方可言。 :) – antred