module Unit_info:sig
..end
此模組集中處理編譯檔案及其元數據。
或許更重要的是,此模組提供從字串或檔案名稱衍生模組名稱的函式。
typemodname =
string
typefilename =
string
typefile_prefix =
string
val modulize : string -> modname
modulize s
將 s
的第一個字母大寫。
val normalize : string -> string
normalize s
將 s
的第一個字母小寫。
val modname_from_source : filename -> modname
modname_from_source filename
是 modulize stem
,其中 stem
是檔案名稱 filename
的基本名稱,已移除所有副檔名。例如,modname_from_source "/pa.th/x.ml.pp"
是 "X"
。
val is_unit_name : modname -> bool
is_unit_name ~strict name
只有在 name
可以用作有效的模組名稱時才為 true。
type
t
編譯單位的元數據
ocamlopt dir/x.mli -o target/y.cmi
時,dir/x.mli
Y
target/y
val source_file : t -> filename
source_file u
是 u
的來源檔案。
val prefix : t -> file_prefix
prefix u
是單位的檔案名稱前綴。
val modname : t -> modname
modname u
或 artifact_modname a
是單位或編譯產物的模組名稱。
val check_unit_name : t -> unit
check_unit_name u
如果衍生模組名稱 modname u
不應按照 Unit_info.is_unit_name
~strict:true
的規定用作模組名稱,則會印出警告。
val make : ?check_modname:bool ->
source_file:filename -> file_prefix -> t
make ~check ~source_file prefix
將 source_file
和模組名稱 Unit_info.modname_from_source
target_prefix
與前綴檔案系統路徑 prefix
相關聯。
如果 check_modname=true
,則如果衍生模組名稱根據 Unit_info.check_unit_name
無效,則此函式會發出警告。
module Artifact:sig
..end
建置產物
val cmi : t -> Artifact.t
這些函式從 unit
元數據衍生特定的 artifact
元數據。
val cmo : t -> Artifact.t
val cmx : t -> Artifact.t
val obj : t -> Artifact.t
val cmt : t -> Artifact.t
val cmti : t -> Artifact.t
val annot : t -> Artifact.t
val companion_cmi : Artifact.t -> Artifact.t
以下函式透過更新其檔案名稱的副檔名來變更產物的類型。這些函式刻意不涵蓋所有產物種類,因為我們想追蹤哪些產物假設會捆綁在一起。
val companion_obj : Artifact.t -> Artifact.t
val companion_cmt : Artifact.t -> Artifact.t
在存在 mli 和 cmi 檔案的情況下,模組實作的編譯會發生變化,以下函式有助於處理此問題。
val mli_from_source : t -> filename
mli_from_source u
是與單位 u
關聯的介面來源檔案名稱。實際的後綴取決於 Config.interface_suffix
。
val mli_from_artifact : Artifact.t -> filename
mli_from_artifact t
是從產物 t
衍生的介面來源檔案名稱。當處理從未知來源檔案衍生的產物時 (例如,封裝模組),此變體是必要的。
val is_cmi : Artifact.t -> bool
檢查產物是否為 cmi
val find_normalized_cmi : t -> Artifact.t
find_normalized_cmi u
在 load_path 中尋找與模組名稱 modname u
比對的檔案。
Not_found