2013-02-14 108 views
1

我有一个生成文件,运行一组涉及各种文件的测试,并将结果写入日志文件。是否可以编写makefile,以便在处理完文件中的所有其他目标后运行同一组shell命令,而不管发生的错误如何。我知道我可以使用shell脚本来调用makefile,然后使用shell命令,但是我想知道是否可以从makefile文件本身做到这一点,而不使用像make print这样的伪目标(例如, 。如何在编译完文件中的所有目标后编写makefile以运行shell命令?

回答

2

你可以尝试这样的事:

.PHONY: test1 test2 test3 finale 

    all: finale 

    finale: test1 test2 test3 

    test1: 
     - exit 1 

    test2: 
     - exit 2 

    test3: 
     - exit 3 

    finale: 
      echo "And the winner is..." 

你使你的脚本,目标“大结局”,依赖于其他目标,并使用“ - ”运营商忽略不回零代码来自测试。

+0

任何方式来“捕捉”而不是忽略返回代码,所以我们可以退出与测试错误代码的结局? – Kaos 2016-04-15 09:01:25

+0

@Kaos您可以使用http://stackoverflow.com/questions/11157083/makefile-output-and-exitcode-to-variable中的解决方案。然而,使用这个解决方案意味着你在评​​估目标依赖关系之前运行所有的测试*实质上是将Makefile转换为Bash脚本。如果要保留Makefile依赖项评估功能,那么当您在Makefile目标配方中执行每个测试时,需要将每个测试的返回代码写入单独的临时文件,然后对最后一个目标中的结果或后Makefile完成执行。 – 2016-05-27 13:07:58

+0

谢谢。我结束了一个单行shell命令: ''' test:update-version build-tools ;; gradle test; RET = $$? ; cp -r app/build/reports $ {DIST_DIR};退出$$ ret ''' – Kaos 2016-06-01 08:50:20

相关问题