makefile未运行。PHONY目标

问题描述 投票:0回答:1

当我尝试运行以下makefile而不运行.PHONY目标时,有人知道为什么吗?

node_modules: package.json
   npm install

.PHONY: puppeteer-deps
puppeteer-deps:
   sudo apt-get install -y gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 lib    gtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca    -certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget```
makefile cmake gnu-make
1个回答
2
投票

[Make仅尝试建立需要满足的目标。创建目标不需要的目标不会运行。设置目标.PHONY不会改变这一事实:它仅表示if一个目标需要构建并且将其标记为.PHONY,然后它将始终被构建。

在make中,目标是在其命令行上指定要进行make的目标,或者,如果在命令行上未指定目标,则是makefile中的第一个目标。

这里,如果您运行make,则您的目标是node_modules,并且由于该目标或该目标的任何先决条件都未将puppeteer-deps列为先决条件,因此不会构建它。

考虑如果您有一个标记为clean.PHONY目标,您肯定不希望该目标始终运行!

© www.soinside.com 2019 - 2024. All rights reserved.