gpt4 book ai didi

c++ - 如何使用 GNU Make 为每个目标运行前后配方?

转载 作者:行者123 更新时间:2023-12-04 12:05:34 24 4
gpt4 key购买 nike

make , 是否可以为每个目标定义一个前后配方?

我想(隐式)在显式配方的第一行上方插入前置配方,然后(隐式)在显式配方的最后一行之后插入后置配方。

使用正则表达式插入行会很容易,但隐式的会更清晰。

最佳答案

您可以创建一个特殊的辅助 shell,在其输入脚本之前和之后执行所需的前后操作,并告诉 make使用该 shell 执行配方(为此使用 SHELL 变量)。

此外,如果您使用多行配方,则必须启用 .ONESHELL 模式。

Caveat: in this mode a failed command (except the last one) doesn't fail the rule, so you either have to join the commands with &&, or append || exit 1 to the end of each command, or run the real shell with the -e option.



示例:

前后 shell
#!/bin/bash

preaction()
{
echo "Pre-action"
}

postaction()
{
echo "Post-action"
}

preaction && /bin/bash "$@" && postaction

生成文件
SHELL=./pre-post-shell

all: Hello Bye

.ONESHELL:

Hello:
@echo Hello
echo Hello again

Bye:
@echo Bye

输出:
$ make
Pre-action
Hello
Hello again
Post-action
Pre-action
Bye
Post-action

关于c++ - 如何使用 GNU Make 为每个目标运行前后配方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37952098/

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