コンテンツへスキップ

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]