1. 程式人生 > >Makefile中常用的一些符號

Makefile中常用的一些符號

1 環境變數

1.1 編譯器

CC   // C語言編譯器,預設值為gcc
CXX  // C++語言編譯器,預設值為g++

說明:這是預設的變數,無需使用者自定義(但是使用者可以修改其值,例如CC=arm-linux-gcc,用於交叉編譯)。

1.2 編譯器引數

CFLAGS   // C語言編譯器的編譯選項
LDFLAGS  // C語言編譯器的連結選項
CXXFLAGS // C++語言編譯器的編譯選項

2 自動化變數

[email protected] 代表規則中的目標檔名。如果目標是一個文件(Linux中,一般稱.a檔案為文件),那麼它代表這個文件的檔名。在多目標的模式規則中,它代表的是哪個觸發規則被執行的目標檔名。
$%規則的目標檔案是一個靜態庫檔案時,代表靜態庫的一個成員名。例如,規則的目標是“foo.a(bar.o)”,那麼,“$%”的值就為“bar.o”,“

[email protected]”的值為“foo.a”。如果目標不是函式庫檔案,其值為空。
$<規則的第一個依賴檔名。如果是隱含規則,則它代表通過目標指定的第一個依賴檔案。
$?所有比目標檔案更新的依賴檔案列表,空格分割。如果目標是靜態庫檔名,代表的是庫成員(.o檔案)的更新情況。
$^規則的所有依賴檔案列表,使用空格分隔。如果目標是靜態庫檔名,它所代表的只能是所有庫成員(.o檔案)名。一個檔案可重複的出現在目標的依賴中,變數“$^”只記錄它的一次引用情況。就是說變數“$^”會去掉重複的依賴檔案。
$+類似“$^”,但是它保留了依賴檔案中重複出現的檔案。主要用在程式連結時,庫的交叉引用場合。
$(@D)代表目標檔案的目錄部分(去掉目錄部分的最後一個斜槓)。如果“
[email protected]
”是“dir/foo.o”,那麼“$(@D)”的值為“dir”。如果“[email protected]”不存在斜槓,其值就是“.”(當前目錄)。注意它和函式“dir”的區別!
$(@F)目標檔案的完整檔名中除目錄以外的部分(實際檔名)。如果“[email protected]”為“dir/foo.o”,那麼“$(@F)”只就是“foo.o”。“$(@F)”等價於函式“$(notdir [email protected])”。
$(%D)
$(%F)當以如“archive(member)”形式靜態庫為目標時,分別表示庫檔案成員“member”名中的目錄部分和檔名部分。它僅對這種形式的規則目標有效。
$(<D)
$(<F)分別表示規則中第一個依賴檔案的目錄部分和檔名部分。
$(^D)
$(^F)分別表示所有依賴檔案的目錄部分和檔案部分(不存在同一檔案)。
$(+D)
$(+F)分別表示所有依賴檔案的目錄部分和檔案部分(可存在重複檔案)。
$(?D)
$(?F)分別表示被更新的依賴檔案的目錄部分和檔案部分。

3 萬用字元

%是萬用字元,%.cc表示工程裡的.cc檔案

4 變數替換
$(VAR:A=B)  同${VAR:A=B}
${VAR:A=B}替換變數“VAR”中所有“A”字元結尾的字為“B”結尾的字。“結尾”的含義是空格之前(變數值的多個字以空格分開)

5 賦值
= 當它的右邊賦值是變數時,這個變數的定義在本條語句之前或之後都可以,即可以遞迴展開。
:= 它右邊賦得值如果是變數,只能使用在這條語句之前定義好的,而不能使用本條語句之後定義的變數,即不可以遞迴展開。
?= 該符號左邊的變數,如果在本條語句之前沒有定義過,則執行本語句,如果已經定義,那麼本語句什麼都不做。
+= 是新增等號後面的值

6 其他符號
@表示在make時不輸出make的資訊(類似Windows下的echo   off)。


7 關鍵字/命令
include在Makefile使用include關鍵字可以把別的Makefile包含進來,這很像C語言的#include,被包含的檔案會原模原樣的放在當前檔案的包含位置
-include其表示,無論include過程中出現什麼錯誤,都不要報錯繼續執行。和其它版本make相容的相關命令是sinclude,其作用和這一個是一樣的。
sinclude同上

8 函式
basename取變數的字首部分

參考資料

相關推薦

Makefile常用一些符號

1 環境變數 1.1 編譯器 CC // C語言編譯器,預設值為gcc CXX // C++語言編譯器,預設值為g++ 說明:這是預設的變數,無需使用者自定義(但是使用者可以修改其值,例如CC=arm-linux-gcc,用於交叉編譯)。 1.2 編譯器引數 C

工程Makefile常用符號

Makefile中常見內容 TOPDIR := $(shell /bin/pwd) CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ else if [ -x /bin/bash ]; the

scala常用特殊符號

article csdn 運算 獲取 kcon test 集合遍歷 map www 參考資料: scala中常用但其他語言不常見的符號含義 Scala學習六:Scala中的特殊字符 =>(匿名函數) 參考文檔:scala => 用法 匿名函數 => 匿

makefile的特殊符號及關鍵字

目標 需要 編寫 ats www. 如果 符號 placement ace 1.常見自動變量和含義 * :表示目標文件的名稱,不包含目標文件的擴展名。 + :表示所有的依賴文件,這些依賴文件之間以空格分開,按照出現的先後為順序,其中可能包含重復的依賴文件。 < :表

Makefile常用函式

Makefile常用函式總結 1、realpath  返回一個絕對路徑 例:ROOT  = $(realpath ./)  返回當前路徑的絕對地址,賦值給ROOT 2、wildcard 萬用字元函式,類似於linux中的 “*” 命令格式: $(

關於python一些符號說明

一.冒號: 1. 一般函式定義。或者迴圈判斷語句在結尾處包含一個冒號,意思是接下來是一個語句塊(block)。 2.切片 list[start : end : step] 值得注意的是:當start,和end不給值的時候看起來就是[::step].

Linux命令常用命令符號解釋

一、萬用字元:" * ” 、" ? ”   和dos下一樣,當我們不知道確切的檔名時,可以用萬用字元來進行模糊操作。“*”可以代表任意長度的任意字元,“?”代表一個任意字元。 二、轉義字元:" \ ”   和dos的命名規則不同的是,萬用字元" * ”、" ? ”是可以在檔名中使用的。   如果要操作的檔

演算法一些符號 O(big-Oh) Ω(big-theta) Θ(big-theta)

一、概述        這是我們在演算法的時間複雜度分析中經常會碰到的幾個符號。符號後面括號裡的是他們相應的讀法。簡單來說,第一個符號的意義相當於“小於等於”;第二個符號的意義相當於“大於等於”;第三個符號的意義相當於“等於”。其實還有一個o(little-oh),它的意義

Makefile常用自動變數

自動變數含義 $*不包含副檔名的目標檔名稱 $+所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案 $<第一個依賴檔案的名稱 $?所有時間戳比目標檔案晚的依賴檔案,並以空格分開 [email protected]目標檔案的完整名稱 $^所

正則表達式常用的元符號

padding bsp tab lsp style idt 正則表達式 pad 指定 ^ 一行的開始標誌如^bigeyyes匹配到所有以bigeyyes開頭的行 $ 一行的結束標誌如$bigeyyes 匹配到所有以bigeyyes結尾的行 ?

收集一些工作常用的經典SQL語句

修改列 平臺 ref 補充 技術分享 deluser etime roc entity 作為一枚程序員來說和數據庫打交道是不可避免的,現收集一下工作中常用的SQL語句,希望能給大家帶來一些幫助,當然不全面,歡迎補充! 1、執行插入語句,獲取自動生成的遞增的ID值 I

VS 常用一些快捷鍵

aid item 添加 efault lock .html tar -m ref 一、代碼自動對齊 CTRL+K+F 二、撤銷/反撤銷 1、撤銷---使用組合鍵“Ctrl+Z”進行撤銷操作 2、反撤銷--

SVN的安裝與常用功能使用以及解決安裝配置過程一些錯誤

三種方式 安裝配置 ava -- 服務器 工作流程圖 例如 完成 網站 SVN簡介: SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,將工程代碼集中在服務器上進行一個統一的集中式管理,從而能夠方便地控制代碼版本,相較於RCS、CVS,它采用了分支管理系統

WINCE一些常用代碼

mfc wince 一、窗口全屏顯示,去掉任務欄//全屏顯示 //隱藏HHTaskBar窗口代碼如下: HWND hTaskBar = ::FindWindow(TEXT("HHTaskBar"), NULL); if (hTaskBar != NULL)

關於機器學習一些常用方法的補充

機器學習 k近鄰 apriori pagerank前言 機器學習相關算法數量龐大,很難一一窮盡,網上有好事之人也評選了相關所謂十大算法(可能排名不分先後),它們分別是: 1. 決策樹2. 隨機森林算法3. 邏輯回歸4. 支持向量機5. 樸素貝葉斯6

wordpress常用一些php代碼

16px ext 信息 列表 emp 登錄 scrip post hid <?php the_author(); ?> 顯示文章的作者<?php the_author_description(); ?> 顯示文章作者的描述(作者個人資料中的描述)&l

Linux工作常用到的一些命令(持續更新)常用

args 10g $1 conf 運行級別 who 快速 以及 awk 1、查看運行級別3開啟的服務列表: chkconfig --list|grep 3:on 2、查找某類型的文件並計算總大小。 find / -name *.conf -exec w

WPF一些常用類型轉換

ref pre text out () put ets 1.5 ORC 原文:WPF中的一些常用類型轉換1.string和Color的轉換: //string轉Color (Color)ColorConverter.ConvertFromString((string

Dubbo在開發一些常用配置

如果 本地 code info 技術 不兼容 mil 是否可用 文檔 介紹Dubbo在開發中的一些常用配置,文中內容主要參考dubbo文檔配置和示例兩節,詳細可移步訪問 傳送站 1. 屬性配置方法及加載順序 屬性常用配置方法主要有三種: 第一種是通過啟動時在虛擬

python常用的正則表達式符號

birt name eee dot 列表 數字 lin bbc dict ‘.‘ 默認匹配除\n之外的任意一個字符,若指定flag DOTALL,則匹配任意字符,包括換行 ‘^‘ 匹配字符開頭,若指定flags MULTILINE,這種也可以匹配上(r"^