首页 > 解决方案 > pybind11 与 CMakeLists 仅用于标头库?

问题描述

CMake的新手,但基本上我有以下结构

MYPROJECT  
    |--executable.cpp
    |--CMakeLists.txt
    |  
    |--bindings
    |     |- file1.cpp
    |     |- file2.cpp          
    |
    |--include
    |     |---- externals
    |     |        |- pybind11    
    |     |        |- Eigen
          |
          |---- MYPROJECTHEADERS
                   |- file1.h
                   |- file2.h

其中:file1.h并且file2.h包括 Eigen 标头。目前(我能想到的)是我的根 CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project("MYPROJECT")
set(CMAKE_CXX_STANDARD 17)

set(MODULE_SOURCE "${PROJECT_SOURCE_DIR}/bindings")
set(EXTERNALS "${PROJECT_SOURCE_DIR}/include")
add_subdirectory(${EXTERNALS}/external/pybind11)

pybind11_add_module (file1 ${MODULE_SOURCE}/file1.cpp)
target_include_directories (file1 PUBLIC ${MODULE_SOURCE})

pybind11_add_module (file2 ${MODULE_SOURCE}/file2.cpp)
target_include_directories (file2 PUBLIC ${MODULE_SOURCE})

(使用 VSCode)

在我的file1.cppit 中,我在线cannot open source file "Eigen/Core" dependency#include "pybind11/eigen.h"说它也说,cannot open source file "file1.h" dependency 但是在我的 c_cpp_properties.json 中,我指定了 Eigen、pybind11 和 MYPROJECTHEADERS 的包含路径,我的executable.cpp(不使用 pybind)工作得很好。在这一点上,我完全迷失了。

注意:该文件夹MYPROJECT/include/externals/Eigen仅包含Eigen/Eigen文件夹(填充有标题),因此没有 CMakeLists.txt 文件MYPROJECT/include/externals/Eigen

标签: c++cmakepybind11

解决方案


推荐阅读