允許自由轉載,但請尊重他人勞動成功,保留源地址。
作者:onebraveman
CSDN:http://blog.csdn.net/idc_void
介紹:本文對Make文檔中系統變量小節進行了翻譯。
Make隱式規則的“處方”使用一些預定義的變量。你可以通過make
參數或者設置Shell環境變量修改makefile文件中變量的值,達到無需重定義變量而改變隱式規則工作的目的。通過使用—R
或者----no-builtin-variables
可選項,你可以取消所有隱式規則中的變量。
例如,編譯C源碼的“處方”常用到$(CC) -c $(CFLAGS) $(CPPFLAGS)
。這個變量的默認值是cc
,命令cc -c
無執行結果。通過重定義cc
爲“ncc”,你可以讓所有隱式C編譯使用“ncc”。通過重定義“CFLAGS”爲“-g”,你可以向每一次編譯傳遞”-g”可選項。所有的隱式規則,如C編譯器使用“
隱式規則使用的變量可分爲兩類:一類是程序名(例如CC);
另一類是包含程序參數的(如CFLAGS)。如果一個變量包含多個參數,用空格分隔。
下面表格描述最常用的預定義變量。這個列表不詳盡,並且這裏的默認值可能與在你環境中make選取的值不同。爲了得到一份你運行環境下GNU詳細的預定義列表,在沒有Makefiles的目錄運行make -p
(限於篇幅原因,只列出4個自己常用到的)。
CC
Program for compiling C programs; default ‘cc’.
CXX
Program for compiling C++ programs; default ‘g++’.
LDFLAGS
Extra flags to give to compilers when they are supposed to invoke the linker, ‘ld’, such as -L. Libraries (-lfoo) should be added to the LDLIBS variable instead.
LDLIBS
Library flags or names given to compilers when they are supposed to invoke the linker, ‘ld’. LOADLIBES is a deprecated (but still supported) alternative to LDLIBS. Non-library linker flags, such as -L, should go in the LDFLAGS variable.
Refer:
1. make系統變量