1 个不稳定版本
使用旧的 Rust 2015
0.24.0 | 2018年8月24日 |
---|
#7 在 #libclang
在 2 个 Crates 中使用(通过 rustkit_bindgen)
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.9
或 libclang-3.9.so
)。在存在多个实例可供选择的情况下,此 crate 将首先选择无版本实例,然后是版本最短且版本最高的实例。例如,以下 libclang.so
实例按优先级降序排列:
libclang.so
libclang.so.4
libclang.so.4.0
libclang.so.3
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