แน่นอน แต่คุณต้องการให้มันคายออกเมื่อใด
หากต้องการรายงานชื่อของเป้าหมายเมื่อเรียกใช้กฎให้ใส่บรรทัดในกฎ:
foo$(VAR): $(PREREQS)
@echo now making the foo target: $@
do_other_stuff...
หากต้องการคายออกมาทั้งหมดในครั้งเดียวคุณสามารถสร้างเป้าหมาย PHONY แยกกันได้:
.PHONY: show_vars
show_vars:
@echo foo$(VAR)
@echo bar$(PARAM) blah$(FLAG)
# and so on
และสิ่งนี้สามารถทำให้เป็นข้อกำหนดเบื้องต้นของเป้าหมายเริ่มต้นของคุณ:
all: show_vars
...
แก้ไข:
คุณต้องการวิธีแสดงเป้าหมายที่เป็นไปได้ทั้งหมดของ makefile โดยพลการซึ่งฉันคิดว่าหมายถึงไม่ล่วงล้ำ ดี...
หากต้องการทำอย่างถูกต้องและสามารถรับมือกับ makefiles ที่ซับซ้อนได้เช่นการเกี่ยวข้องกับกฎที่สร้างโดยeval
คำสั่งคุณจะต้องเขียนสิ่งที่ใกล้เคียงกับ Make emulator ทำไม่ได้
หากต้องการดูเป้าหมายของกฎง่ายๆคุณสามารถเขียน makefile ที่จะทำหน้าที่เป็นเครื่องสแกน makefile ซึ่งทำงานบน makefile โดยพลการ:
- รับชื่อเป้าหมายทั้งหมดจาก makefile โดยใช้ sed
- "รวม" makefile เพื่อใช้ขยายตัวแปร
- ใช้ `show_%:; echo $$ * "เพื่อพิมพ์เป้าหมายทั้งหมด
นี่คงเป็นผลงานที่น่าประทับใจ แน่ใจหรือว่าเป้าหมายนั้นคุ้มค่ากับความพยายาม?