annotation Link

Overview

A lib can be marked with @[Link(lib : String, ldflags : String, static : Bool, framework : String)] to declare the library that should be linked when compiling the program.

At least one of the lib, ldflags, framework arguments needs to be specified.

@[Link(ldflags: "-lpcre")] will pass -lpcre straight to the linker.

@[Link("pcre")] will lookup for a shared library.

  1. will lookup pcre using pkg-config, if not found
  2. will pass -lpcre to the linker.

@[Link("pcre", static: true)] will favor static libraries over shared libraries.

  1. will lookup libpcre.a in CRYSTAL_LIBRARY_PATH, if not found
  2. will lookup pcre using pkg-config --static, if not found,
  3. will lookup libpcre.a in /usr/lib, /usr/local/lib

@[Link(framework: "Cocoa")] will pass -framework Cocoa to the linker.

When an -l option is passed to the linker, it will lookup the libraries in paths passed with the -L option. CRYSTAL_LIBRARY_PATH, /usr/lib, and /usr/local/lib are added by default. Custom paths can be passed using ldflags: @[Link(ldflags: "-Lvendor/bin")].

Defined in:

annotations.cr