【发布时间】:2021-05-18 10:15:09
【问题描述】:
假设我有类似的东西
.PHONY: kill-server
kill-server:
kill -9 $(lsof -t -i :9000)
为什么它不起作用,我该如何解决?
【问题讨论】:
-
您没有指定您使用的是哪个 make,但在我所知道的所有这些中,
$(FOO)扩展了 make 内部的变量FOO。例如见here。 -
@user1934428 但对于调用函数,我也使用
$(),不是吗? gnu.org/software/make/manual/html_node/… -
对于 make 函数,但 lsof 不是 make 函数。 this 有帮助吗?
-
$(lsof -t -i :9000)在读取 makefile 时将扩展为make。要将执行推迟到运行kill-server的点,请改用$$(lsof -t -i :9000)。 -
仅供参考,
$(lsof ...)不会在“读取 makefile 时”被 make 扩展。这是配方的一部分,当 make 想要运行它时,配方将被 make 扩展,就在调用 shell 来构建目标之前。如果目标从未构建,则配方将永远不会扩展。