Skip to content

命令行用法

如果已经按照 安装 中的说明安装了 cjbind,并且可以通过 cjbind --version 命令查看版本号,那么你可以使用 cjbind 命令来生成 FFI 绑定代码。

cjbind 命令接收一个 C 头文件路径作为输入,并可选地指定生成绑定的输出文件路径。如果未提供输出文件路径,绑定代码将输出到 stdout

如果我们要从名为 library.h 的 C 头文件生成仓颉 FFI 绑定,并将其放入 cjbind_ffi.cj 文件中,可以这样调用 cjbind

bash
$ cjbind -o cjbind_ffi.cj library.h

要查看更详细的帮助信息,请传递 --help 参数:

text
$ cjbind --help
自动生成仓颉到 C 库的 FFI 绑定代码。

用法:cjbind <OPTIONS> <HEADER> -- <CLANG_ARGS>

参数:
    <HEADER>          C 头文件路径
    [CLANG_ARGS]...   会被直接传递给 clang 的参数

选项:
        --no-enum-prefix                 生成枚举时,不使用枚举名称作为枚举值的前缀
        --no-detect-include-path         禁用自动 include 路径检测
        --no-comment                     不尝试生成代码中的注释
        --no-layout-test                 不生成布局测试代码
        --builtins                       生成内置定义的 bindings,如 __builtin_va_list
        --make-func-wrapper              生成 foreign 函数包装器以允许包外调用
        --func-wrapper-suffix <SUFFIX>   生成函数包装器时使用的后缀,默认为 _cjbindwrapper
        --auto-cstring                   把 char* 转换为 CString 而不是 CPointer<UInt8>
        --array-pointers-in-args         把数组 T arr[size] 转换为 VArray<T, $size> 而不是 CPointer<T>
        --make-cjstring                  把 C 字符串转换为仓颉的 String 而不是 VArray<UInt8>,这可能会导致二进制表示不一致
    -o, --output <FILE>                  把生成的绑定输出到文件
    -p, --package <PACKAGE>              生成的绑定中的包名
    -v, --version                        显示版本号并退出
    -h, --help                           显示帮助信息

以 MIT 许可证发布