python - 将单元测试可执行文件链接到 pybind 库(CMake)
问题描述
我正在使用 pybind11 和 CMake 为一组 C++ 库构建 python 绑定。我想对绑定进行 C++ 和 Python 单元测试。问题是 CMake 使用创建的目标pybind11_module_add
无法与我的单元测试可执行文件链接:
target_link_libraries(my_bindings_lib_test
PRIVATE
my_bindings_lib # <- target of type MODULE_LIBRARY may not be linked into another target
gtest
}
现在我正在考虑一些替代解决方案,每个解决方案都有一些缺点:
- 用于
pybind_module_add(target SHARED ...)
生成共享库。缺点是必须修改源代码才能导出所有符号。 - 在测试 CMake 中包含所有绑定库源代码文件并有效地构建它们两次。
- 使用
add_library
而不是pybind_module_add
手动完成所有与 Python 相关的工作(查找和链接 Python、NumPy、生成库后缀等)。
也许还有一些我错过了。什么是更可取的方法?
解决方案
推荐阅读
- vue.js - 使用 vuetify 在 vue 中实现向下钻取标签的正确方法
- c# - 为 Swagger 路径参数添加默认值
- python - Python:将“”分配给列表切片的行为的基本原理
- javascript - pointerdown vs onclick:有什么区别?
- spring-cloud - 分配给路由的 Spring Cloud Gateway Resilience4j 特定断路器
- airflow - BigQuery 运算符作为 xcom 的结果 - Airflow 2.0
- c# - 如何为自动化测试生成 Gherkin 脚本
- rendezvous-hash - 集合散列库
- algorithm - 如何从一组重叠的圆中计算出一组多边形?
- python - Flask 如何通过连接的客户端分发 RabbitMQ 消息