#libclang #clang #fork #temporary #run-time #bindings #static

sys rustkit-clang-sys

RustKit 的临时分支 clang-sys

1 个不稳定版本

使用旧的 Rust 2015

0.24.0 2018年8月24日

#7#libclang


2 个 Crates 中使用(通过 rustkit_bindgen

Apache-2.0

135KB
2.5K SLoC

rustkit-clang-sys

这是 RustKit 的临时分支 clang-sys。不要使用此分支!

Rust 对 libclang 的绑定。

如果你对这些绑定的 Rust 包装器感兴趣,请参阅 clang-rs

支持稳定、测试和夜间 Rust 频道。

在 Apache License 2.0 下发布。

支持版本

要针对 libclang 的版本,启用以下 Cargo 功能之一

  • clang_3_5 - 需要 libclang 3.5 或更高版本(文档
  • clang_3_6 - 需要 libclang 3.6 或更高版本(文档
  • clang_3_7 - 需要 libclang 3.7 或更高版本(文档
  • clang_3_8 - 需要 libclang 3.8 或更高版本(文档
  • clang_3_9 - 需要 libclang 3.9 或更高版本(文档
  • clang_4_0 - 需要 libclang 4.0 或更高版本(文档
  • clang_5_0 - 需要 libclang 5.0 或更高版本(文档
  • clang_6_0 - 需要 libclang 6.0 或更高版本(文档
  • clang_6_0 - 需要 libclang 7.0 或更高版本(文档
  • clang_8_0 - 需要 libclang 8.0 或更高版本(《文档》)

如果您没有启用这些功能之一,默认情况下将提供 libclang 3.5 提供的 API。

依赖项

默认情况下,此 crate 将尝试动态链接到 libclang。在这种情况下,此 crate 依赖于 libclang 共享库(在 Linux 上为 libclang.so,在 OS X 上为 libclang.dylib,在 Windows 上为 libclang.dll)。如果您想静态链接到 libclang,请启用 static Cargo 功能。在这种情况下,此 crate 依赖于 LLVM 和 Clang 静态库。如果您想在编译时而不是运行时链接到 libclang,请启用 runtime Cargo 功能。

这些库可以作为 Clang 的一部分安装,或者从此处下载。

注意:此 crate 支持查找 libclang.so 的版本化实例(例如,libclang.so.3.9libclang-3.9.so)。在存在多个实例可供选择的情况下,此 crate 将首先选择无版本实例,然后是版本最短且版本最高的实例。例如,以下 libclang.so 实例按优先级降序排列:

  1. libclang.so
  2. libclang.so.4
  3. libclang.so.4.0
  4. libclang.so.3
  5. libclang.so.3.9

注意:LLVM 和 Clang 3.8 及更高版本的下载不包括 libclang.a 静态库。这意味着除非您从源代码构建它,否则您不能静态链接到这些版本的 libclang

环境变量

以下环境变量(如果已设置)将被此 crate 用于查找所需的库和可执行文件

  • LLVM_CONFIG_PATH (编译时) - 提供一个指向 llvm-config 可执行文件的路径
  • LIBCLANG_PATH (编译时) - 提供一个包含 libclang 共享库的目录的路径
  • LIBCLANG_STATIC_PATH (编译时) - 提供一个包含 LLVM 和 Clang 静态库的目录的路径
  • CLANG_PATH (运行时) - 提供指向 clang 可执行文件的路径

链接

动态

首先,如果设置了 LIBCLANG_PATH 环境变量,将在该变量提供的目录中搜索 libclang 共享库。如果失败,将搜索由 llvm-config --libdir 返回的目录。如果这也失败,将搜索 LD_LIBRARY_PATH 环境变量中的目录。如果所有这些方法都失败,将搜索一系列可能的目录(例如,Linux 上的 /usr/local/lib)。

在Linux上,运行动态链接到 libclang 的可执行文件可能需要您将 libclang.so 的路径添加到 LD_LIBRARY_PATH 环境变量中。在OS X上也是如此,但使用的是 DYLD_LIBRARY_PATH 环境变量。

在Windows上,运行动态链接到 libclang 的可执行文件需要确保可执行文件在运行时可以找到 libclang.dll。有关更多信息,请参阅此处

静态

对于静态链接,llvm-config 的可用性是必须的。请确保在系统路径中可以找到此可执行文件的实例,或者设置 LLVM_CONFIG_PATH 环境变量。所需的 LLVM 和 Clang 静态库将按照与查找共享库相同的方式进行搜索,只是使用 LIBCLANG_STATIC_PATH 环境变量代替 LIBCLANG_PATH 环境变量。

运行时

使用 clang_sys::load 函数来加载用于在调用线程中使用的 libclang 共享库。使用 clang_sys::unload 函数将卸载 libclang 共享库。与在编译时动态链接 libclang 时搜索的方式相同,clang_sys::load 将搜索 libclang 共享库。

依赖项

~53–285KB