我需要构建一个需要特定 Linux 包的 C 程序。我将一个变量 PACKAGENOTIFICATION 设置为一个 shell 命令,该命令应该检查是否为 Ubuntu 安装了该软件包,如果没有则打印一个通知:
PACKAGENOTIFICATION := if cat /etc/issue | grep Ubuntu -c >>/dev/null; then if ! dpkg -l | grep libx11-dev -c >>/dev/null; then echo "<insert notification here>"; fi; fi
[...]
maintarget: dependencies
$(PACKAGENOTIFICATION)
other_commands
不幸的是,在制作依赖项时,它会运行到需要包的文件中,并在执行我的 PACKAGENOTIFICATION 之前出错。另一种表述是创建一个单独的目标,其唯一目的是运行通知:
maintarget: notify other_dependencies
commands
notify:
$(PACKAGENOTIFICATION)
然而,由于这个幻像依赖总是需要被执行,make 永远不会报告程序是最新的。
让始终报告为最新的最佳方法是什么,但在通知死亡之前执行我的通知?
谢谢!