代码之家  ›  专栏  ›  技术社区  ›  EsotericVoid

pybind11目录结构问题

  •  0
  • EsotericVoid  · 技术社区  · 7 年前

    我正在尝试将pybind11集成到我与CMake的项目中。我的结构如下:

    foo
    ├───pybind11
    ├───src
        └─── __init.py__ (empty)
    │   └─── mymodule.cpp
    └─── __init.py__ (empty)
    └───CMakeLists.txt
    src
    ├───core
    ├───bar
    ├───baz
    └───CMakeLists.txt
    setup.py
    CMakeLists.txt
    

    foo/CmakeLists.txt 文件,除了调用pybind11之外:

    add_subdirectory(pybind11)
    pybind11_add_module(foo src/mymodule.cpp)
    set(CORE "../src/core")
    ...
    target_link_libraries(foo PUBLIC
            core
            bar
            baz
            )
    target_include_directories(pyceam
        PUBLIC  ${core}/include
        ...
    )
    

    我从里面复制了setup.py the official CMake example

    ext_modules=[CMakeExtension('foo', sourcedir='.')],
    

    这将正确安装,但会产生空模块:

    >>> import foo
    >>> dir(foo)
    ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
    

    sourcedir 参数,所以我尝试了两件事,但都没有成功:

    1. 移动 setup.py 在foo里面打电话 sourcedir='..'
    2. 安装程序.py 在根目录中调用 sourcedir='./foo'

    在这两种情况下,我得到:

    3>链接:致命错误LNK1181:无法打开输入文件“core.lib”

    有谁能为我指出正确的方向来解决这个问题吗?

    0 回复  |  直到 7 年前