当我尝试运行以下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```
[Make仅尝试建立需要满足的目标。创建目标不需要的目标不会运行。设置目标.PHONY
不会改变这一事实:它仅表示if一个目标需要构建并且将其标记为.PHONY
,然后它将始终被构建。
在make中,目标是在其命令行上指定要进行make的目标,或者,如果在命令行上未指定目标,则是makefile中的第一个目标。
这里,如果您运行make
,则您的目标是node_modules
,并且由于该目标或该目标的任何先决条件都未将puppeteer-deps
列为先决条件,因此不会构建它。
考虑如果您有一个标记为clean
的.PHONY
目标,您肯定不希望该目标始终运行!