make的隱含規則資料庫中用到了很多變數,有些變數沒有定義(例如cflags),有些變數定義了預設值(例如cc)。
寫makefile時可以重新定義這些變數的值,也可以在預設值的基礎上追加。
以下是一些常用的變數。
ar 靜態庫打包命令的名字,預設值是ar。
arflags
靜態庫打包命令的選項,預設值是rv。
as 彙編器的名字,預設值是as。
asflags
彙編器的選項,沒有定義。
cc c編譯器的名字,預設值是cc。
cflags
c編譯器的選項,沒有定義。
cxx
c++編譯器的名字,預設值是g++。
cxxflags
c++編譯器的選項,沒有定義。
cpp
c預處理器的名字,預設值是$(cc) -e。
cppflags
c預處理器的選項,沒有定義。
ld 鏈結器的名字,預設值是ld。
ldflags
鏈結器的選項,沒有定義。
target_arch
和目標平台相關的命令列選項,沒有定義。
output_option
輸出的命令列選項,預設值是-o $@。
link.o
把.o檔案鏈結在一起的命令列,預設值是$(cc) $(ldflags) $(target_arch)。
link.c
把.c檔案鏈結在一起的命令列,預設值是$(cc) $(cflags) $(cppflags) $(ldflags)$(target_arch)。
link.cc
把.cc檔案(c++原始檔)鏈結在一起的命令列,預設值是$(cxx) $(cxxflags)$(cppflags) $(ldflags) $(target_arch)。
compile.c
編譯.c檔案的命令列,預設值是$(cc) $(cflags) $(cppflags) $(target_arch) -c。
compile.cc
編譯.cc檔案的命令列,預設值是$(cxx) $(cxxflags) $(cppflags) $(target_arch) -c。
rm 刪除命令的名字,預設值是rm -f。
Make選項及makefile常用變數
make命令可以帶幾種引數 標誌,巨集定義,描述檔名和目標檔名,標準形式為 make flags macro definitions targets 在unix下,flags包含 f file 指定file檔案為描述檔案.如果file引數為 描述檔案指向標準輸入,如果沒有 f 則系統預設當前目錄下m...
makefile編譯選項與常用變數
d 條件選擇編譯 i 標頭檔案搜尋路徑 l 連線靜態庫 l 連線庫的路徑 wall 開啟警告開關 ar 靜態庫打包命令的名字,預設值是ar。arflags 靜態庫打包的選項,預設值rv as 彙編器的名字,預設值是as。asflags 彙編器的選項,沒有定義。cc c編譯器的名字,預設值是cc。cf...
Makefile基礎 變數
這一節我們詳細看看makefile中關於變數的語法規則。先看乙個簡單的例子 foo bar bar huh?all echo foo 我們執行make將會打出huh?當make讀到foo bar 時,確定foo的值是 bar 但並不立即展開 bar 然後讀到bar huh?確定bar的值是huh?然...