gpt4 book ai didi

makefile - 制作: execute an action for each prerequisite

转载 作者:行者123 更新时间:2023-12-04 09:37:09 26 4
gpt4 key购买 nike

我想在我的Makefile中建立一个像这样的规则:

log: test_A test_B
./test_A >> $@
./test_B >> $@

但是 test_Atest_B$(TESTS)变量的一部分。

因此,是否可以对GNU/make中的每个先决条件执行一个操作(在这里:调用程序)?

注意: How do I make a makefile rule execute its prerequisites?不能完全解决此问题,因为需要目标 log( make log)。

最佳答案

本质上,您想遍历先决条件。这样做的显而易见的方法是将其平移到 shell 上:

log: test_A test_B
for f in $^; do ./$$f; done

或者,您也可以将循环写为GNU Make foreach循环,尽管您必须注意,循环体产生的命令将显示在单独的行中(通过 define)或以 shell 终止符(即半终止符)终止-冒号,这更容易):
log: test_A test_B
$(foreach f,$^,./$(f);)

最后,在这种情况下,您可以更简洁明了地将其编写为要循环遍历的每个项目上的模式替换:
log: test_A test_B
$(patsubst %,./%;,$^)

(我确定您可以适当添加输出重定向和 $(TESTS)变量。)

关于makefile - 制作: execute an action for each prerequisite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com