檢視原始碼 make (工具 v4.1.1)
Erlang 的 Make 工具
模組 make
提供了一組類似於 UNIX 類型 Make
函式的功能。
Emakefile
make:all/0,1
和 make:files/1,2
首先在選項中尋找 {emake, Emake}
,然後在目前的工作目錄中尋找名為 Emakefile
的檔案。如果存在,Emake
應包含如下的元素
Modules.
{Modules,Options}.
Modules
是一個原子或原子列表。它可以是:
- 一個模組名稱,例如
file1
- 另一個目錄中的模組名稱,例如
'../foo/file3'
- 一組使用萬用字元指定的模組,例如
'file*'
- 一個表示目前目錄中所有模組的萬用字元,即:
'*'
- 任何上述的列表,例如
['file*','../foo/file3','File4']
Options
是一個編譯器選項的列表。
Emakefile
從上到下讀取。如果一個模組符合多個條目,則使用第一個符合的條目。例如,以下 Emakefile
表示 file1
應該使用選項 [debug_info,{i,"../foo"}]
編譯,而目前目錄中的所有其他檔案應僅使用 debug_info
標誌編譯。
{'file1',[debug_info,{i,"../foo"}]}.
{'*',[debug_info]}.
另請參閱
摘要
函式
-spec all() -> up_to_date | error.
等同於 all([])
。
-spec all(Options) -> up_to_date | error when Options :: [Option], Option :: noexec | load | netload | {emake, Emake} | compile:option(), Emake :: [EmakeElement], EmakeElement :: Modules | {Modules, [compile:option()]}, Modules :: atom() | [atom()].
此函式透過首先尋找 emake
make 選項來確定要編譯的模組集和要使用的編譯選項,如果不存在,則從名為 Emakefile
的檔案中讀取設定(請參閱下文)。如果找不到此類檔案,則要編譯的模組集預設為目前工作目錄中的所有模組。
遍歷模組集,然後重新編譯符合以下至少一個條件的每個模組:
- 沒有物件檔案,或
- 自上次編譯以來,原始檔已修改,或
- 自上次編譯原始檔以來,include 檔案已修改。
作為副作用,該函式會印出它嘗試編譯的每個模組的名稱。如果模組的編譯失敗,則 make 程序會停止並傳回 error
。
Options
是 make
和 Erlang 編譯器的選項列表。存在以下 make
選項:
noexec
無執行模式。僅印出需要編譯的每個模組的名稱。load
載入模式。載入所有重新編譯的模組。netload
網路載入模式。在所有已知的節點上載入所有重新編譯的模組。{emake, Emake}
而不是讀取Emakefile
,明確指定設定。
Options
中所有不是 make 選項的項目都會被假定為編譯器選項,並按原樣傳遞給 compile:file/2
。
-spec files(ModFiles) -> up_to_date | error when ModFiles :: [(Module :: module()) | (File :: file:filename())].
等同於 files(ModFiles, [])
。
-spec files(ModFiles, Options) -> up_to_date | error when ModFiles :: [(Module :: module()) | (File :: file:filename())], Options :: [Option], Option :: noexec | load | netload | compile:option().
此函式的作用與 all/0,1
完全相同,但適用於指定的 ModFiles
,它是模組或檔案名稱的列表。
可以省略檔案副檔名 .erl
。
會搜尋目前目錄中的 Emakefile
(如果存在),以尋找每個模組的編譯器選項。如果給定的模組不存在於 Emakefile
中,或者如果 Emakefile
不存在,則仍然會編譯該模組。