Makefile 規則的執行優先順序(不討論隱藏規則內的優先順序)
轉載請註明出處,謝謝
宣告:由於不清楚makefile的匹配規則演算法,下面的結論都是自己思考後測試的結果,如若有出錯,還請指出
=============================================================
結論:(優先順序由上往下遞減)
顯式規則:
完全匹配
半匹配
完全萬用字元匹配
隱藏規則:
(據說按照隱藏規則的順序,測試發現,能一步達成的優先順序高於分多步達成,
例如:%:%.c > %.o:%.c + %:%.o)
需要補充說明的是:顯式規則若無命令,則此規則不參與匹配優先順序
==============================================================
以下為驗證過程:
<span style="font-size:18px;">.PHONY:all clean
all:quick_sort bubble_sort
#匹配1
%_sort: %_sort.c
@echo "matching [email protected]"
@echo 'in %_sort'
#匹配2
%:%.c
@echo "matching [email protected]"
@echo 'in %'
#匹配3
quick_sort:quick_sort.c
@echo "matching [email protected] "
@echo 'in quick_sort'
clean:
$(RM) *.o bubble_sort quick_sort</span>
輸出結果:
$make
matching quick_sort
in quick_sort
matching bubble_sort
in %_sort
$
結論:
顯式規則中並不是按照上下文順序匹配,因為匹配quick_sort時3個目標每一個都能匹配,而make選擇了3最大匹配。匹配bubble_sort時,目標1、2均能匹配,然後make選擇了2半匹配(%_sort)
因此,顯式匹配中,按照最大匹配優先,其次為半匹配,最後為完全萬用字元匹配
由於顯式規則能過載、取消隱藏規則(測試見我的另外一篇部落格),因此顯式規則優先順序 > 隱藏規則
相關推薦
win10操作虛擬機器中hadoop IntelliJ IDEA直接執行程式碼(不需要打jar包)
IntelliJ IDEA 2018.2.3 (Ultimate Edition)+Maven VMware中CentOS6.5 Hadoop2.7.1 上課的時候老師使用的是Eclipse編譯器,使用了 eclipse-hadoop的外掛。可以直接在eclipse
禁用瀏覽器滾動事件(不隱藏其滾動條)
function unScroll() { var top = $(document).scrollTop(); $(document).on('scroll.unable', function(e) { $(document).scrollTop(top);
Makefile 規則的執行優先順序(不討論隱藏規則內的優先順序)
轉載請註明出處,謝謝 宣告:由於不清楚makefile的匹配規則演算法,下面的結論都是自己思考後測試的結果,如若有出錯,還請指出 ============================================================= 結論:(優先順序由上
13. Roman to Integer(不懂規則)
題目 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from
int與long 兩種資料型別有什麼區別?|__int64固定大小為8位元組,不受執行環境(的CPU和作業系統位數)影響
筆記原創: 蘭特 聯絡郵件: [email protected] 系統平臺:linux平臺,gcc 有這樣的一個程式,是關於使用隨機函式rand()的: #include <stdio.h> #include <stdlib.h> #include <time.h> int
使用linux的shell腳本實現在當前行重復動態顯示時間等字符串信息(不另起新行)
shell 實現 時間 lin 裏的 cnblogs find fin suse11 ###本腳本在Suse11sp2當中驗證正確 #!/bin/sh while ((1)) do echo -ne "\r$(d
為什麽使用 Arrays.asList()得到的集合,使用remove( )和 add( )方法會拋出unsupportedoperationexception(不支持操作異常)
操作 err move lan 16px exceptio operation amp span 這是由於: Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。 Arrays$ArrayList
KendoUI關於Grid頁面刷新賦值(不修改數據庫)
fresh 修改 png row -1 event var 技術 remove 1.Grid頁面某個字段修改賦值(不用刷新) var row = GG.data("kendoGrid").select(); var data = GG.data("kend
linux實戰考試題:批量創建用戶和密碼(不能使用循環)
linux 實戰 批量創建10個用戶,並且設置隨機8位密碼,要求不能用shell的循環(例如:for,while等),只能用linux命令及管道實現。方法1:[[email protected]/* */ /]# echo stu{01..10}|tr " " "\n"|sed -r ‘s
Android中關於項目中對Thread的管理(不是線程池)
lan ole 問題 直接 per dma 之前 ron move 背景 項目中對於一些並不復雜的耗時操作,比如計算,不頻繁操作數據庫等,因為沒必要使用線程池,所以之前項目會直接使用new Thread的方式,時間一長,回頭再看,原來new Thread之處已經很多
微信瀏覽器禁止頁面下拉查看網址(不影響頁面內部scroll)
完美解決 comm -i con js代碼 uil from () -c 此類事件是手機touchmove默認事件行為,可以通過js代碼隱藏事件: $(‘body’).on(‘touchmove’, function (ev
從尾到頭打印鏈表(不改變鏈表結構)
pri 鏈表 create 打印 main creat ack UC list /* * 從尾到頭打印鏈表.cpp * * Created on: 2018年4月7日 * Author: soyo */ #include<iostream>
Selenium_python自動化跨瀏覽器執行測試(簡單多線程案例)
思路 IT port 情況 art 百度一 吸引 find 導致 發生背景: 跨瀏覽器測試是功能測試的一個分支,用以驗證web應用在不同瀏覽器上的正常工作,通常情況下,我們都期望web類應用能夠被我們的用戶在任何瀏覽器上使用,例如有的人喜歡IE瀏覽器上使用,有的人喜
socket實現兩臺FTP服務器指定目錄下的文件轉移(不依賴第三方jar包)
gets util new ram ali ftp文件 turn tps lap 通過socket實現兩臺FTP服務器指定目錄下的文件轉移,其中包含了基礎了ftp文件列表顯示、上傳和下載。這裏僅供學習用,需掌握的點有socket、ftp命令、文件流讀取轉換等 完整代碼如下:
將數組轉化為json字符串(不使用json_encode函數)
enc pan cti 數組轉化為json div UNC key lse public 將數組轉化為json字符串(不使用json_encode函數) 1 public function arrayToJson($arr,$jsonStr=‘‘){ 2
python 代碼審計-命令執行漏洞(自己編寫的代碼)
[1] 問題 錯誤 code 端口掃描 iter turn command att python 代碼審計-命令執行漏洞(自己編寫的代碼) 0x00 源代碼 def execute(request): context ={} ip= request.POS
spring-boot configuration processor 讓配置檔案有提示(不包括自定義的)
IDEA新建spring-boot時 勾選該項 勾選該項後pom.xml就會出現 <dependency> <groupId>org.springframework.boot</groupId> <
MapReduce 程式執行演示(示例PI程式 wordcount程式)
你說的9000埠應該指的是fs.default.name或fs.defaultFS(新版本)這一配置屬性吧,這個屬性是描述叢集中NameNode結點的URI(包括協議、主機名稱、埠號) 50070其實是在hdfs-site.xml裡面的配置引數dfs.namenode.http-address,
修改RAC 的IP地址 (不包含private IP地址)
環境 RDBMS 11.2.0.4 修改RAC 的IP地址,包括public、VIP 、SCAN 等IP。不包含private IP 。 步驟 1 關閉庫,監聽,CRS等 2 修改/etc/hosts 3 OS層面修改IP 4 啟動CRS 5
RMAN遷移數據庫(不改變文件目錄)
ins implicit open fix edi pattern created sta 備份 1、目標庫創建相應目錄mkdir -p /u01/app/oracle/oradata/orclmkdir -p /u01/app/oracle/fast_recovery_a