pybind11 проблемы со структурой каталогов - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь интегрировать 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 мне нужно связать библиотеки в проектах core, bar и baz (которые имеют все свои собственные make-файлы), поэтому я настроил относительный импорт вмой 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 из официального примера CMake , единственной строки, которую я имеюизменено в вызове установки:

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. оставить setup.py в корневом каталоге и вызвать сsourcedir='./foo'

и в обоих случаях я получаю:

3> ССЫЛКА: фатальная ошибка LNK1181: не могу открыть входной файл 'core.lib'

Кто-нибудь может указать мне правильное направление, чтобы решить эту проблему?

...