lib¶
lib
宣告將屬於某個函式庫的 C 函式和型別分組。
@[Link("pcre")]
lib LibPCRE
end
雖然編譯器不會強制執行,但 lib
的名稱通常以 Lib
開頭。
屬性用於將旗標傳遞給連結器,以尋找外部函式庫
@[Link("pcre")]
會將-lpcre
傳遞給連結器,但編譯器會先嘗試使用 pkg-config。@[Link(ldflags: "...")]
會將這些旗標直接傳遞給連結器,而不進行修改。例如:@[Link(ldflags: "-lpcre")]
。常見的技巧是使用反引號來執行命令:@[Link(ldflags: "`pkg-config libpcre --libs`")]
。@[Link(framework: "Cocoa")]
會將-framework Cocoa
傳遞給連結器(僅在 macOS 中有用)。
如果函式庫是隱式連結的,例如 libc,則可以省略屬性。
反射¶
Lib 函式在使用方法 TypeNode#methods
的程式碼中,巨集語言的任何位置都可見。
lib LibFoo
fun foo
end
{{ LibFoo.methods }} # => [fun foo]