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]