make 在執行時會設置一個特殊變量 -- "MAKECMDGOALS" ,該變量記錄了命令行參數指定的終極目標列表,沒有通過參數指定終極目標時此變量為空。該變量僅限於用在特殊場合(比如判斷),在 Makefile 中最好不要對它進行重新定義。
下面通過一個實例來說明此變量的意思,設一 Makefile 內容如下:
- ifeq ("$(MAKECMDGOALS)","are you ok cmdgoals")
- who="you"
- endif
- are:
- @echo "are"
- you:
- @echo "you"
- ok:
- @echo "ok"
- cmdgoals:
- @echo "MAKECMDGOALS: $(MAKECMDGOALS)"
- @echo "who are $(who)"
運行輸出:
[beyes@SLinux tempa]$ make are you ok cmdgoals
are
you
ok
MAKECMDGOALS: are you ok cmdgoals
who are you
我們在命令行中同時指定了 "are" , "you", "ok", 以及 "cmdgoals" 這 4 個目標。這些目標的名字都會傳入 MAKECMDGOALS 中。
在其中我們可以學習幾個命令:
1.判斷
ifeq ("$(MAKECMDGOALS)","are you ok cmdgoals") who="you" endif
2.echo
@echo