【发布时间】:2021-01-19 11:15:09
【问题描述】:
我正在使用 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.txt 和lib/myCPPCode/CMakeLists.txt?
提前谢谢你!
【问题讨论】:
-
你永远不应该
#include.cpp文件。是错字吗? -
嗨@super 不,不是错字。如果我想使用另一个文件中定义的函数,我应该怎么做?
-
您创建了一个
.hpp文件,其中包含声明。然后将定义放入.cpp文件中。.cpp文件被编译,通常作为它自己的翻译单元,当一些其他代码需要使用这些函数时,它只包含来自.hpp的声明,并且它们在链接过程中结合在一起。 -
@super 我明白了,谢谢你的评论,我会这样做的
-
@super 我用你的建议更新了问题!
标签: c++ python-3.x cmake pybind11 cmakelists-options