跳至內容

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]