将标志添加到 cffi 编译过程

Posted

技术标签:

【中文标题】将标志添加到 cffi 编译过程【英文标题】:add flags to cffi compile process 【发布时间】:2017-05-08 11:34:10 【问题描述】:

我使用 cffi 模块来包装一个简单的 c 代码。问题是,我需要添加一个标志以使其编译(std=c99)。 目前我有类似的东西:

from cffi import FFI
ffibuilder = FFI()
with open("test.c", 'r') as f:
    ffibuilder.set_source("mymodule", f.read()) 
with open("test.h", 'r') as f:
    ffibuilder.cdef(f.read())
if __name__ == "__main__":
    ffibuilder.compile(verbose=True)

问题是,cffi 自己调用 gcc,我想将 std=c99 添加到它调用 gcc 的标志中。 我缺少任何参数吗?

(注意:我可以更改 gcc 命令本身或运行 cffi 自己使用的 gcc 命令,我想知道我是否遗漏了一些正确的方法)

【问题讨论】:

您应该将其发布为您自己问题的答案,然后将其标记为已解决。 【参考方案1】:

我终于找到了答案:

set_source 接受extra_compile_args 参数:所以你可以调用:

ffibuilder.set_source(..., extra_compile_args=["-std=c99"])

【讨论】:

以上是关于将标志添加到 cffi 编译过程的主要内容,如果未能解决你的问题,请参考以下文章

链接程序时是不是需要重复编译标志?

如何在使用 Open Modelica 编译器进行展平步骤后停止编译过程?

如何通过 Qt 项目文件将命令的输出作为编译器标志传递?

加载 dll 时 Python CFFI 模块失败:OSError 0x7e

GCC - 仅在特定功能上启用编译器标志

无法在 Xcode 中添加编译器标志?