linux中make的有關規則的特性

2022-08-01 22:15:25 字數 1308 閱讀 7122

我過去認為 makefile 只是一種將一組組的 shell

命令列出來的簡便方法;過了一段時間我了解到它們是有多麼的強大、靈活以及功能齊全。這篇文章帶你領略其中一些有關規則的特性。

規則

規則是指示 make 應該如何並且何時構建乙個被稱作為目標的檔案的指令。目標可以依賴於其它被稱作為前提的檔案。

你會指示 make 如何按步驟構建目標,那就是一套按照出現順序一次執行乙個的 shell

命令。語法像這樣:

target_name : prerequisites

recipe

一但你定義好了規則,你就可以通過從命令列執行以下命令構建目標:

$ make target_name
目標一經構建,除非前提改變,否則 make 會足夠聰明地不再去執行該步驟。

關於前提的更多資訊

前提表明了兩件事情:

如果你想要定義乙個順序但是你不想在前提改變的時候重新構建目標,你可以使用一種特別的叫做「唯順序」的前提。這種前提可以被放在普通的前提之後,用管道符(|)進行分隔。

樣式

為了便利,make 接受目標和前提的樣式。通過包含 % 符號可以定義一種樣式。這個符號是乙個可以匹配任何長度的文字元號或者空隔的萬用字元。以下有一些示例:

特殊目標

有一系列目標名字,它們對於 make 來說有特殊的意義,被稱作特殊目標。

你可以在這個文件發現全套特殊目標。作為一種經驗法則,特殊目標以點開始後面跟著大寫字母。

以下是幾個有用的特殊目標:

替代

當你需要以你指定的改動方式改變乙個變數的值,替代就十分有用了。

替代的格式是 $(var:a=b),它的意思是獲取變數 var 的值,用值裡面的 b 替代詞末尾的每個 a 以代替最終的字串。例如:

foo := a.obar : = $(foo:.o=.c) # sets bar to a.c
檔案檔案

檔案檔案是用來一起將多個資料文件(類似於壓縮檔案的概念)收集成乙個檔案。它們由 ar unix 工具所構建。ar 可以用於為任何目的建立檔案,但除了靜態庫,它已經被 tar 大量替代。

在 make 中,你可以使用乙個檔案檔案中的單獨乙個成員作為目標或者前提,就像這樣:

archive(member) : prerequisite 

recipe

via: 

本文由 lctt 原創編譯,linux中國 榮譽推出

make的簡單使用規則

make的使用 1.make基本使用規則 make在使用時可以根據一系列預先設定的規則來執行。這些設定的規則可以記錄在乙個檔案中,預設該檔案的名字是makefile。make的使用形式為 make option macrodef target option指出make的工作行為,make的主要選項有...

Make的隱式規則

隱式規則1 當依賴出現重名時,make將所有的依賴整合,形成最後的依賴。2 當目標中的命令出現重複時,make將發出警告,使用後來的命令執行結果來替換前面的命令執行結果,因此在makefile中使用include時應避免在include所包含的檔案中使用命令。隱式規則2 make會提供一些自定義的變...

linux中的make命令

make命令的選項和引數 k 它的作用是讓make命令在發現錯誤時仍然繼續執行,而不是在檢測到第乙個錯誤時就停下來。n 它的作用是讓make命令輸出將要執行的操作步驟,而不真正執行這些操作 f 它的作用是告訴make命令將哪個檔案作為makefile檔案。如果未使用這個選項,標準版本的make 命令...