gpt4 book ai didi

makefile - 从 makefile 内部自动安装包

转载 作者:行者123 更新时间:2023-12-04 06:23:27 25 4
gpt4 key购买 nike

目标:当用户输入'make packages'时,自动搜索包libx11-dev(我的程序编译需要),如果没有找到,则安装它。这是我的 makefile 的精简版:

PACKAGES = $(shell if [ -z $(dpkg -l | grep libx11-dev) ]; then sudo apt-get install libx11-dev; fi)

[other definitions and targets]

packages: $(PACKAGES)

当我输入“make packages”时,系统会提示我输入 super 用户密码。如果输入正确,它将无限期挂起。

我在makefile中尝试做的事情甚至可能吗?如果是这样,如何?

非常感谢。

最佳答案

问题在于shell function 就像 shell 中的反引号:它将输出带到 stdout 并将其作为函数的值返回。因此,apt-get 并没有挂起,它正在等待您输入对某个问题的响应。但是您看不到问题,因为 make 已经获取了输出。

你这样做的方式是行不通的。您为什么使用 shell而不是将其作为规则编写?

packages:
[ -z `dpkg -l | grep libx11-dev` ] && sudo apt-get install libx11-dev
.PHONY: packages

关于makefile - 从 makefile 内部自动安装包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10608004/

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