从命令获取GNU makefile目标

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

我使用下面的代码来获取一个makefile目标列表,该列表在大多数情况下都可以正常工作,但是当您使用这样的makefile时,您只会得到两个目标,而并非全部。

cat Makefile

command: ## Command description
    @echo "Execution log"

another-command: ## Command description
    @echo "Execution log"

command2: ## Command description
    @echo "Execution log" 

输出为:

command
command2

我不明白为什么我没有收到命令another-command,这是代码

`make -qp | awk -F':' '/^[a-zA-Z0-9][^$#\\\/t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}' `;

可能是什么问题?

我尝试了有目的的解决方案,但它提供了一个错误:

make -qp | grep '^[a-z0-9-]\+:'

linux bash shell makefile gnu-make
1个回答
0
投票

可能是什么问题?

问题在于此正则表达式:

/^[a-zA-Z0-9][^$#\\\/t=]*:([^=]|$)/

与目标名称中的连字符(-)不匹配。无关紧要的是,awk是一个笨拙的工具,可用于显示您实际上正在使用的工具; grep会更易于使用:

make -qp | grep '^[a-z0-9-]\+:'

,产生输出

command:
command2:
another-command:
© www.soinside.com 2019 - 2024. All rights reserved.