1. 程式人生 > >Linux之Makefile(靜態模式)

Linux之Makefile(靜態模式)

 objects = foo.o bar.o

    all: $(objects)

    $(objects): %.o: %.c
            $(CC) -c $(CFLAGS) $< -o [email protected]


上面的例子中,指明瞭我們的目標從$object中獲取,“%.o”表明要所有以“.o”結尾的目標,也就是“foo.o bar.o”,也就是變數$object集合的模式,而依賴模式“%.c”則取模式“%.o”的“%”,也就是“foo bar”,併為其加下“.c”的字尾,於是,我們的依賴目標就是“foo.c bar.c”。而命令中的“$<”和“

[email protected]”則是自動化變數,“$<”表示所有的依賴目標集(也就是“foo.c bar.c”),“[email protected]”表示目標集(也就是“foo.o bar.o”)。於是,上面的規則展開後等價於下面的規則:

    foo.o : foo.c
            $(CC) -c $(CFLAGS) foo.c -o foo.o
    bar.o : bar.c
            $(CC) -c $(CFLAGS) bar.c -o bar.o

試想,如果我們的“%.o”有幾百個,那種我們只要用這種很簡單的“靜態模式規則”就可以寫完一堆規則,實在是太有效率了。“靜態模式規則”的用法很靈活,如果用得好,那會一個很強大的功能。

相關推薦

LinuxMakefile靜態模式

 objects = foo.o bar.o     all: $(objects)     $(objects): %.o: %.c             $(CC) -c $(CFLAGS) $< -o [email protected] 上

LinuxMakefile併發執行命令

GNU make 支援同時執行多條命令。通常情況下,同一時刻只有一個命令在執行, 下一個命令只有在當前命令執行完成之後才能夠開始執行。不過可以通過 make的命令 行選項“-j”或者“--job”來告訴 make 在同一時刻可以允許多條命令同時被執行(注 意,在 MS-DOS中此選項無效,因為它是單任務作業系

LinuxMakefilefilter

$(filter PATTERN…,TEXT)  函式名稱:過濾函式—filter。  函式功能:過濾掉字串“TEXT”中所有不符合模式“PATTERN”的單詞,保留所 有符合此模式的單詞。可以使用多個模式。模式中一般需要包含模式字 符“%”。存在多個模式時,模式表示式之間使用空格分割。  返回值:空格分割的

設計模式實例(Lua)筆記Decorator模式

部分 才幹 mark ack 我沒 () str div new 1.描寫敘述 就說說"我"上小學的的糗事吧。我上小學的時候學習成績非常的差,班級上 40 多個同學,我基本上都是在排名 45 名以後,依照老師給我的定義就是“不是讀書的料”,可是我老爸管的非常嚴

設計模式實例(Lua)筆記Adapter模式

系統 資源管理 公司 個人 title 人的 實例 sel 我們 1.描寫敘述 “我”在 2004 年的時候帶了一個項目,做一個人力資源管理,該項目是我們總公司發起的項目,公司一共同擁有 700 多號人,包含子公司,這個項目還是比較簡單的,分為三大模塊:人員信息管理

設計模式實例(Lua)筆記Bridge模式

制造 ria 先生 關聯 賣出 都在 int 每一個 賺大錢 1.描寫敘述 今天我要說說我自己,夢想中的我自己,我身價過億,有兩個大公司,一個是房地產公司,一個是服裝制造業,這兩個公司都非常賺錢,天天幫我在累加財富,事實上是什麽公司我倒是不關心,我關心的是是不

Redis的集群方案Sentinel哨兵模式待實踐

tps log csdn mooc 實現 tail net sentinel .net 哨兵模式是主從切換的一種方案,但是可以借助此方案實現集群,達到高可用。 先收集教程,待實踐。 參考: https://redis.io/topics/sentinel(官方文

23種設計模式策略模式

而不是 部分 nts 設定 算法 策略 bstr 算法族 none 策略模式:(分別封裝行為接口,實現算法族,超類裏放行為接口對象,在子類裏具體設定行為對象) 原則:   分離變化部分,封裝接口,基於接口編程各種功能。此模式讓行為算法的變化獨立於算法的使用者。    舉

清華大學視頻課件:基於Linux的C++自主模式

清華大學 視頻課件 基於linux的c++基於Linux的C++(自主模式)課程簡介Linux操作系統開源的特性使得其獲得越來越重要的地位,而Linux系統編程也向C++程序設計者提出了更高的要求。本課程由C/C++語言的共性與特性出發,在深入學習程序設計語言的基礎上,進一步強調程序設計語言的適用性,並與Li

LinuxDNS詳解

什麼是DNS?         DNS 是域名系統 (Domain Name System) 的縮寫,它是由解析器和域名伺服器組成的。域名伺服器是指儲存有該網路中所有主機的域名和對應IP地址,並具有將域名轉換為IP地址功能的伺服器。其中域名必須對應一個IP

RabbitMQ的Exchange 模式direct指定模式

direct模式是rabbitmq的預設模式,看懂了下圖基本就明白了該模式 在這個模式中,我們可以看到兩個佇列在direct模式下繫結的Exchange(交換機)X. 第一個佇列用binding key(繫結關鍵字)orange繫結,第二個佇列有兩個bin

設計模式例項(Lua)筆記Bridge模式

1.描述      今天我要說說我自己,夢想中的我自己,我身價過億,有兩個大公司,一個是房地產公司,一個是服裝製造業,這兩個公司都很賺錢,天天幫我在累加財富,其實是什麼公司我倒是不關心,我關心的是是不是在賺錢,賺 了多少,這才是我關心的,我是商人呀,唯利是圖是我的本性,偷稅漏

設計模式(c++)筆記Composite模式

問題很多,我們一個一個解決,先說抽象的問題,確實可以吧 IBranch 和 IRoot 合併成一個介面,這個我們先肯定下來,這是個比較大的改動,我們先畫個類圖(類名稍微做下變化): 本人工程目錄:              註釋:       main(),客戶       CCorpNode,

java架構路-設計模式五種建立型模式單例模式

  設計模式自身一直不是很瞭解,但其實我們時刻都在使用這些設計模式的,java有23種設計模式和6大原則。 設計模式是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性、程式的重用性。 其中包含 建立型模式,共五種:單

JAVA設計模式【代理模式】一靜態代理

代理模式 代理模式是物件的結構模式,給一個物件提供一個代理物件,由代理物件控制對原物件的引用。我們可以通過操作代理物件實現對原物件的呼叫。 本文主要講述靜態代理,jdk動態代理,cglib動態代理三種。 代理的種類 - 遠端(Remo

linuxmakefile的學習

為什麼要學習makefile 在linux下開發專案,如果想要完成一個大型專案的開發,可能在windows環境下,有許多編譯器就已經替代了makefile功能,但在linux下想要合理管理程式碼,學會編寫makefile就非常重要了。 makefile 關係

java設計模式代理模式 靜態&動態

  為其他物件提供一個代理控制對某個物件的訪問,代理類負責為委託類預處理訊息,過濾訊息並轉發訊息,以及進行訊息被委託類執行後的後續處理。 代理類和委託類要實現相同的介面,因為代理真正實現的還是委託類的方法。 使用場景:   如果需要委託類處理某一業務,就可以在代理類中統一處

linux開發工具Makefile

int src pattern 可執行 nts spa roots 可執行文件 ats make 常用內嵌函數以及多級目錄Makefile 一、函數調用 $(function arguments),利用$號引用函數,下面是Makefile中常用三個函數: 1、$(w

Nginx知多少系列(十四)Linux下.NET Core專案Nginx+Keepalived高可用主從模式

目錄 1.前言 2.安裝 3.配置檔案詳解 4.工作原理 5.Linux下託管.NET Core專案 6.Linux下.NET Core專案負載均衡 7.負載均衡策略 8.加權輪詢(round robin)策略剖析 9.IP雜湊(ip hash)策略剖析 10.最少連線(least_conn)策略剖析 11

55.storm hello word本地模式

pro collector base 執行 top 命令 type utc isp strom hello word 概述 然後卡一下代碼怎麽實現的: 編寫數據源類:Spout。可以使用兩種方式:繼承BaseRichSpout類實現IRichSpout接口主要需要實現或