根据pybind库(CMake)链接单元测试可执行文件

2024-06-02 05:36:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pybDun11和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、生成库后缀等)

也许我还缺少其他人。什么是更好的方法


Tags: cmakeaddtarget源代码链接mylib方案