5 ms·
Right, you used 'make' as the parser. He said "grep the makefile". You're not grepping the makefile. Nice solution though!
by TheDong 12y ago
Right, you used 'make' as the parser. He said "grep the makefile". You're not grepping the makefile. Nice solution though!
- Hello71 12y ago> You need to write a full parser to discover all the targets. I don't think grep '^[^ ]*:' really counts as writing a parser.
- TheDong 12y agoRunning "make -p" is running a full parser which someone else wrote. Grep is not extracting the targets from a makefile there, it's extracting the targets from an intermediate representation of a makefile.
- Hello71 12y ago> The real insanity with make is that it has no interface to check whether a Makefile contains a given target. > > Best you can do is to run make -n target to probe, but it's possible to write Makefiles that run code even though -n is used, which will defeat such probes at distribution scale. It quickly becomes an exercise in heuristics and output parsing.
- TheDong 12y agoWe're arguing different things. The comment I replied to, chaosfactors, specifically specified grepping the makefile. You're arguing that you can find all the targets and I never said you can't. I simply said you can't find them all by only grepping the makefile.