gpt4 book ai didi

ubuntu - cd .. 在 Makefile 中没有 ONESHELL 的情况下工作

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

来自 docs ,需要加一个target.ONESHELL使所有命令在同一个子 shell 进程中运行。对此的进一步讨论是here .

这是我的makefile ,

.PHONY: clean build
.ONESHELL: deploy

zip := my.zip

clean:
cd ..
rm -f $(zip)

build: clean
npm install .
zip -r ../$(zip) . \
--exclude=package-lock.json \
--exclude=.gitignore \
--exclude=makefile \
--exclude=*.git*

... more lines

所以当我做 make build ,创建父文件夹中的 zip 文件。当我这样做时 make clean (从同一目录中)zip 也从父文件夹中删除。自从 cd .. 以来我不明白的地方在独立的 shell 进程中运行,如何使用 make clean 删除父文件夹中的 zip命令,因为它不包含在 .ONESHELL 中?

版本:Ubuntu 18.04 上的 GNU Make 4.1

最佳答案

.ONESHELL不接受先决条件(或更准确地说,它忽略了它们)。如果您定义它,它将为整个 makefile 启用。当前无法指定 .ONESHELL仅针对个别目标。

GNU make 手册说:

If the .ONESHELL special target appears anywhere in the makefile then all recipe lines for each target will be provided to a single invocation of the shell.

关于ubuntu - cd .. 在 Makefile 中没有 ONESHELL 的情况下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51543219/

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