make:自动执行目标

烤肉串

在我的项目中,我有一组从源代码构建的程序:

SRC_FILES = $(wildcard $(SRC_DIR)/*.cpp)
TARGETS   = $(patsubst $(SRC_DIR)/%.cpp,$(BIN_DIR)/%,$(SRC_FILES))

我的构建目标很简单,并且工作正常:

all: $(TARGETS)
    @echo "- Done target $@"

现在,我想要一个run目标,以便所有这些程序都可以根据需要从外壳程序运行。说,如果我有3个文件,我想让make自动运行:

>$ ./test1
>$ ./test2
>$ ./test3

或者

>$ ./test1 && ./test2 && ./test3

我尝试了这个:

run: $(TARGETS)
   $(addsuffix && ,$(TARGETS))

生成以下命令:

./test1&& ./test2&&

但由于尾随而失败 &&

(当然,我希望这些可以自动生成,因为可以有3 ...或30。)

编辑:实际上,&&分隔符不是必需的,所以是这样的:

>$ ./test1; ./test2; ./test3;

也可以。

伊坦·赖斯纳

作为Basile Starynkevitch完全正确答案的替代方法,这里(至少)还有两个其他选择。

您可以通过手动拉出第一个条目来避免运行不必要的命令(尽管可能是内置命令)来结束列表(实际上,这可能比内置的shell代价更高)。

run: $(TARGETS)
        $< $(addprefix &&,$(wordlist 2,$(words $^),$^))

我认为一个更好的选择是,假设&&不需要与之连接,那就是使用它$(foreach)来生成要运行的命令。

run: $(TARGETS)
        $(foreach t,$^,$t;)

尾随;之所以至关重要,是因为它的输出$(foreach)是一行,并且您需要;终止每个shell命令(或者将其视为带有参数的长命令)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

gnu make:如何自动列出和建立所有目标

来自分类Dev

自动执行网络任务?

来自分类Dev

自动执行eclipse插件

来自分类Dev

虚假目标,用于并行执行make

来自分类Dev

如何递归执行MSBuild目标?

来自分类Dev

Maven执行插件目标?

来自分类Dev

如何通过选择“ make config”中的所有选项来自动执行端口安装?

来自分类Dev

Makefile自动目标生成

来自分类Dev

自动执行命令

来自分类Dev

仅在目标存在时才执行的GNU Make规则?

来自分类Dev

Javascript自动功能执行

来自分类Dev

使用“ make -f”自动执行奇怪的行为

来自分类Dev

Swift自动执行异步

来自分类Dev

自动执行脚本

来自分类Dev

当用户在bash中自动完成时,从shell隐藏make目标

来自分类Dev

GDB目标执行者

来自分类Dev

使用“ make -f”自动执行奇怪的行为

来自分类Dev

如何自动执行onclick?

来自分类Dev

UISegmentControl不执行目标方法?

来自分类Dev

执行自动增量查询

来自分类Dev

插件目标的Maven执行?

来自分类Dev

覆盖默认make目标

来自分类Dev

Javascript:自动执行功能

来自分类Dev

是否可以在GNU make的给定目标下的一组其他目标下执行所有语句?

来自分类Dev

在cellForRowAtIndexPath中自动调用的目标

来自分类Dev

Excel VBA自动填充目标

来自分类Dev

自动执行php代码

来自分类Dev

使用可变参数自动执行 make

来自分类Dev

GNU make:如何防止“-include file.ext”执行目标为“file.ext”的规则?