main.cpp未检测到添加到CMakeLists.txt的子目录

问题描述

我正在使用Pybind11创建与c ++代码的python绑定。 我的项目架构如下:

-- MyProject
   | -- lib
         | -- pybind11
              | -- CMakeLists.txt
              | -- include
         | -- myCPPCode
              | -- CMakeLists.txt
              | -- MyCodeDeFinitions.h
              | -- MyCode.cpp
   | -- src
         | -- MyProject
              | -- MyModule.cpp
   | -- CMakeLists.txt
   | -- setup.py

我想做的是将#include <myCPPCode/MyCodeDeFinitions.h>包含在MyModule.cpp中。

为此,我在全局CMakeLists.txt添加了以下命令:add_subdirectory(lib/myCPPCode),但是它不起作用,因为我不知道要在lib/myCPPCode/CMakeLists.txt添加什么,并且出现以下错误

path/MyProject/src/MyProject/MyModule.cpp:2:10: Fatal error: myCPPCode/MyCodeDeFinitions.h: No such file or directory
    2 | #include <myCPPCode/MyCodeDeFinitions.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~

lib/myCPPCode/CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.13)
project(myCPPCode)


add_library(myCPPCode MyCode.cpp)

我应该如何配置CMakeLists.txtlib/myCPPCode/CMakeLists.txt

提前谢谢!

解决方法

add_subdirectory只是告诉cmake在给定参数的目录中找到CMakeLists.txt。

您需要将add_subdirectory(lib/myCPPCode)更改为include_directories(lib/myCPPCode),这样应该会更好。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...