У меня есть настройка проекта, подобная этой:
root
|
src__ init.py
Nameofwraper.cpp
|
lib___ __pybind11
|
bunch of files
include__
|
pybind11.h
__my_c++_library
|
|
__include
|
my_c++_library.lib
my_c++_library.h
Я пытаюсь написать оболочку для своей библиотеки C ++, чтобы я мог использовать ее в Python (используя Pybind11). У меня проблемы с записью моего файла CMake для этого. Я не могу использовать классы и методы этих классов в моем NameofWraper.cpp
.
Я пытался сделать что-то вроде этого:
cmake_minimum_required(VERSION 3.11.0)
project(translator)
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "E:/Boost/boost_1_72_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "E:/Boost/boost_1_72_0/stage/lib")
find_package( Boost REQUIRED )
add_subdirectory(my_lib) #my lib uses CMake to create .lib file
add_subdirectory(pybind11)
set(SOURCE_DIR "src/my_lib_python")
include_directories(${SOURCE_DIR})
add_executable(MyTranslator "${SOURCE_DIR}/translator.cpp")
target_link_libraries(MyTranslator my_lib.lib)
pybind11_add_module(translator ${SOURCES} "${SOURCE_DIR}/translator.cpp")
и что-то вроде этого:
cmake_minimum_required(VERSION 3.11.0)
project(translator)
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "E:/Boost/boost_1_72_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "E:/Boost/boost_1_72_0/stage/lib")
find_package( Boost REQUIRED )
set_property(TARGET my_lib.lib PROPERTY POSITION_INDEPENDENT_CODE ON)
include_directories('my_lib/include')
add_library(my_lib "${SOURCE_DIR}/my_lib/debug") #the directory where my_lib.lib file is
include_directories('my_lib_build')
add_subdirectory(pybind11)
set(SOURCE_DIR "src/my_lib_python")
include_directories(${SOURCE_DIR})
add_executable(MyTranslator "${SOURCE_DIR}/translator.cpp")
target_link_libraries(MyTranslator my_lib.lib)
pybind11_add_module(translator ${SOURCES} "${SOURCE_DIR}/translator.cpp")
но когда я пытаюсь включить любой класс из my_lib, я получаю ошибку компоновки. Что я делаю неправильно? извините 4 длинный пост.