我希望能够以python包的形式调用我的C++代码。为此,我正在使用
pybind11
使用CMakelists(以下示例
https://github.com/pybind/cmake_example
)。我的问题是,我必须在代码编译中包含GSL库,而这些库需要一个显式链接器
-lgsl
。
如果我只是编译和运行C++而不使用python包装它,那么下面的Cmakelists。txt文件执行此任务
cmake_minimum_required(VERSION 3.0)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
project(myProject)
add_executable(
myexecutable
main.cpp
function1.cpp
)
find_package(GSL REQUIRED)
target_link_libraries(myexecutable GSL::gsl GSL::gslcblas)
但使用时
pybind11
我找到的模板不允许
add_executable
因此
target_link_libraries
不起作用。
我已经试过了
project(myProject)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED YES) # See below (1)
# Set source directory
set(SOURCE_DIR "project")
# Tell CMake that headers are also in SOURCE_DIR
include_directories(${SOURCE_DIR})
set(SOURCES "${SOURCE_DIR}/functions.cpp")
# Generate Python module
add_subdirectory(lib/pybind11)
pybind11_add_module(namr ${SOURCES} "${SOURCE_DIR}/bindings.cpp")
FIND_PACKAGE(GSL REQUIRED)
target_link_libraries(GSL::gsl GSL::gslcblas)
但这会在建筑中产生错误。
有什么想法吗?