檢視原始碼 make (工具 v4.1.1)

Erlang 的 Make 工具

模組 make 提供了一組類似於 UNIX 類型 Make 函式的功能。

Emakefile

make:all/0,1make: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]}.

另請參閱

編譯器應用程式

摘要

函式

等同於 all([])

此函式透過首先尋找 emake make 選項來確定要編譯的模組集和要使用的編譯選項,如果不存在,則從名為 Emakefile 的檔案中讀取設定(請參閱下文)。如果找不到此類檔案,則要編譯的模組集預設為目前工作目錄中的所有模組。

此函式的作用與 all/0,1 完全相同,但適用於指定的 ModFiles,它是模組或檔案名稱的列表。

函式

-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

Optionsmake 和 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, [])

連結到此函式

files(ModFiles, Options)

檢視原始碼
-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 不存在,則仍然會編譯該模組。