我正在尝试将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
参数,所以我尝试了两件事,但都没有成功:
-
移动
setup.py
在foo里面打电话
sourcedir='..'
-
安装程序.py
在根目录中调用
sourcedir='./foo'
在这两种情况下,我得到:
3>链接:致命错误LNK1181:无法打开输入文件“core.lib”
有谁能为我指出正确的方向来解决这个问题吗?