构建 Cython 模块时如何覆盖 -DNDEBUG 编译标志

2024-02-21

我有一个 Cython 模块,通过调用 C++ 函数cdef extern。 C++ 函数有assert()声明,我想核实这些说法。但是,当我通过调用创建模块时python setup.py build_ext --inplace, GCC 总是被调用-DNDEBUG。每当运行代码时,都不会检查断言。

我找不到覆盖的方法-DNDEBUG using setup.py。这可能吗?

目前我发现处理这个问题的唯一方法是手动调用 Cython、GCC 和g++与使用的选项python setup.py,但要取出-DNDEBUG。但一定有更简单的方法。


您可以在您的setup.py文件。只需在定义扩展时使用 undef_macros 选项:

extensions = [ Extension ( "myprog", [ mysrc.c ], undef_macros = [ "NDEBUG" ] ) ]

在构建输出中,您将看到 -DNDEBUG 后跟 -UNDEBUG,它会覆盖它。有关扩展选项的更多信息,请参阅distutils 文档 https://docs.python.org/2/distutils/apiref.html#distutils.

但请注意,在扩展模块中触发的断言将导致 Python,或IPython https://en.wikipedia.org/wiki/IPython,解释器退出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建 Cython 模块时如何覆盖 -DNDEBUG 编译标志 的相关文章

随机推荐

  • 文件名的 LEX 槽类型。 AMAZON.LITERAL 替代品

    我必须用示例话语创建意图 打开文件 文件名 显示 文件名 基本上 我必须有一个接受文件名的插槽 用户可以输入 打开我的文件报告 pdf 打开文件活动1 doc 打开文件去年报告 如果我可以使用 AMAZON LITERAL 类型 它会完美地
  • 从相同类型的另一个对象更新实体框架对象

    是否有任何方法可以从强类型对象更新对象而不列出每个字段 让我们考虑以下情况 using var context new MyDBEntities var user User Session EditedUser var oldUser co
  • Chrome 102:已被 CORS 策略阻止:请求的目标 IP 地址空间为“未知”,但资源位于“私有”地址空间中

    我们有一个托管在 LAN 中的基于 Web 的系统 非 SSL 从 Chrome 102 Windows Ubuntu 开始 我们面临一个随机的 CORS 问题 描述为 已被 CORS 策略阻止 请求具有目标 IP 地址空间 为 未知 但资
  • JS addeventListener 点击消失

    我创建了简单的fidlle https jsfiddle net 0nm4uLvd var cnt 1 function add var root document getElementById root root innerHTML br
  • 无法运行从 spring-boot jersey 生成的 jar

    我无法使用带有 jersey 项目的 spring boot 运行生成的 jar 文件 我遇到的例外是 Error starting Tomcat context Exception org springframework beans fa
  • 如果验证后我决定将元素移回原处,如何将 jquery-uidraggable 恢复为 true?

    我正在寻找一种方法 如果某些内容未验证 则从恢复状态触发事件 例如 如果元素不存在 它将从另一个列表中创建它 但如果它已经存在 则应该转到 else 并将元素返回到其原来的位置 catalog ul droppable tolerance
  • 如何在 Java 中使用 Scala 单例对象?

    我有一个需要在 Java 类中使用的 Scala 对象 这是 Scala 对象 object Person val MALE m val FEMALE f 如何在 Java 中使用这个 Scala 对象 到目前为止 我已尝试以下操作但没有成
  • 使用私有 git 存储库来阅读文档

    我安装了 read the docs 以从需要用户 密码身份验证的私有 git 存储库上的项目开始生成文档 手动导入项目时 如何输入用户名和密码以允许阅读文档克隆存储库 非常感谢 最大限度 我最近遇到了同样的问题 这里还有一个这样的问题为什
  • DataGrid 选项卡导航跳过列

    我在 WPF 中有一个带有模板列的数据网格 网格中的几列是只读的 其他焦点变为可编辑 而不是出现标签 文本框 复选框等 我想要实现的是 当我在网格的列中进行切换时 只读列将被跳过 有人知道如何实现这一目标吗 谢谢 弗拉丹 不 不工作 这是完
  • 如何实现自定义 UIDynamicBehavior 操作

    我一直在寻找一个示例 展示如何在 UIKit 动态中实现自定义 UIDynamicBehavior 所有教程和示例仅展示如何使用基元 碰撞 重力 附件 推动 捕捉等 组装 UIDynamicBehavior 在我的应用程序中 一些视图在屏幕
  • 在 Commodore 64 中绘制屏幕边框

    我的好奇心已经持续了 25 年 我很想了解其中的奥秘 在 Commodore 64 中 6569 VIC 无法寻址边界 您所能做的就是在中心区域 光标移动的区域 绘制像素 边框总是统一的 尽管你可以用 poke 53280 改变它的颜色 如
  • 在Mac OS上使用GCC为MS-DOS编译C程序(DOSBox)

    我在Mac OS X上的Snow Leopard下运行GCC 4 2 1 我想用它来编译我15年前写的一些旧的C C DOS游戏 以便我可以在下面运行它们DosBox http www dosbox com 为此 它们显然需要编译为 DOS
  • 两个列表,Python 中的比较速度更快

    我正在编写 python 2 7 脚本来比较两个列表 这些列表是通过读取文件内容从文件创建的 文件只是文本文件 没有二进制文件 文件 1 仅包含哈希值 某些明文单词的 MD5 和 文件 2 是 hash plain 列表具有不同的长度 从逻
  • Git 丢失更改[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 今天在使用 Git 的时候遇到了一些问题 我真的无法理解 我们的团队有一个私人 github 存储库 我从该共享存储库中提取了一些更改 完成
  • F# 中的受歧视联盟是什么以及 OOP 中我们有什么类型的替代方案

    我正在从 C 开始学习函数式编程 当然 由于我对 C 有着深入而详细的了解 我选择了我的第一个函数式语言 F 并尝试投入时间来学习它 现在我需要了解什么是受歧视的工会为什么它很重要以及为什么我们真正需要它 我确实做了很多研究 但导师 讲师
  • float() 的文字无效:0.000001,如何修复错误?

    我有一个包含 3 列数据的 csv 文件 我需要创建一个新的输出文件 其中包含原始文件第一列和第三列中的一组特定数据 第三列包含十进制值 我相信在这种情况下我已经使用了 python 的 float 功能 我尝试过以下代码 in file
  • 图神经网络中的梯度爆炸问题

    我有一个梯度爆炸问题 尝试了几天后仍无法解决 我在 TensorFlow 中实现了一个自定义消息传递图神经网络 用于根据图数据预测连续值 每个图表都与一个目标值相关联 图的每个节点由节点属性向量表示 节点之间的边由边属性向量表示 在消息传递
  • 存储后端如何影响 Datomic?

    我该如何选择 Datomic 的后端存储服务 选择 DynamoDB 而不是 Postgres 是一个偏好问题 还是每个选项都有不同的权衡 如果有 它们是什么 存储服务要求 Datomic 的存储服务一般应满足 3 个要求 实施键值存储语义
  • 如何计算三次贝塞尔曲线的控制点

    在执行三次贝塞尔曲线程序时我发现它使用端点为 10 10 0 和 0 1 0 其他控制点为 5 10 2 和 10 5 2 我不能了解他们是如何获得其他控制点的请帮我找到它们的任何公式或方法 Edit 如果你想让贝塞尔曲线平滑地通过N个点且
  • 构建 Cython 模块时如何覆盖 -DNDEBUG 编译标志

    我有一个 Cython 模块 通过调用 C 函数cdef extern C 函数有assert 声明 我想核实这些说法 但是 当我通过调用创建模块时python setup py build ext inplace GCC 总是被调用 DN