我使用过rake(一个Ruby make程序),它有一个选项来获取所有可用目标的列表,例如
> rake --tasks
rake db:charset # retrieve the charset for your data...
rake db:collation # retrieve the collation for your da...
rake db:create # Creates the databases defined in y...
rake db:drop # Drops the database for your curren...
...
但是在GNU make中似乎没有选择这样做。
显然,自2007年以来,几乎已经有相应的代码了-http: //www.mail-archive.com/help-make@gnu.org/msg06434.html。
无论如何,我几乎没有办法从makefile中提取目标,您可以将其包含在makefile中。
list:
@grep '^[^#[:space:]].*:' Makefile
它将为您提供已定义目标的列表。这只是一个开始-例如,它不会筛选出依赖项。
> make list
list:
copy:
run:
plot:
turnin:
grep : Makefile
吗?
alias makefile-targets='grep "^[^#[:space:]].*:" Makefile'
大多数情况下,我只需要检查当前的makefile,bash的完成范围就会扩大我的别名。