makefile - Makefile 目标规则和 PHONY 问题
问题描述
我知道这可以通过不同的方式完成,但我实际上正在寻找有关 makefile 的更多信息。
我希望能够调用make somefile.txt
和运行给定的脚本。
在我当前的文件夹中,我有:
生成文件
%.txt:
# perl -pe "s/#.*//g; s/^\n//g; s/\n/\t/g;" .txt
echo "Hi"
当我打电话make
时,我得到
make: `somefile.txt' is up to date.
我知道我需要使用.PHONY
,但尝试将其与%.txt
.
我已经尝试过诸如
files = *.txt
.PHONY = $(files)
%.txt:
# perl -pe "s/#.*//g; s/^\n//g; s/\n/\t/g;" .txt
echo "Hi"
但这实际上并没有奏效。
解决方案
如果您不想在 makefile 中列出要构建的目标,而只是在命令行上提供它们,则可以使用以下命令:
.PHONY: $(MAKECMDGOALS)
该变量MAKECMDGOALS
将设置为您在命令行中给出的目标集。
重要的是要了解 makefile 不是外壳,因此仅粘贴*.txt
在 makefile 中的任何位置并不总是会扩展它。只有 makefile 的特定区域可以直接使用 shell glob。
如果你想总是扩展它,你可以wildcard
像这样使用make的函数:
files = $(wildcard *.txt)
推荐阅读
- html - 为什么我在网页上看到 2 个幻灯片?
- reactjs - 图像导入的 Node Express SSR 上的“无效或意外令牌”
- eclipse - 无法运行 kotlin 项目
- swift - 是否可以使用设备数据中的替代应用程序图标?
- python - 创建后如何使用 python 移动 tkinter 窗口?
- javascript - Javascript API 语法帮助 - const { uport, MNID }
- javascript - 如何重命名 mongodb 响应键?
- python - UNIQUE 约束失败的 Django 模型
- sql-server - System.Data.SqlClient.SqlException - 无法通过 Management Studio 连接到 SQL Server
- android - 用于编辑大数据对象的不同视图类型的 RecyclerView