我只想能够用以下行编译C++程序
#include <pybind11/pybind11.h>
我试着用cmake:设置路径
set(CMAKE_CXX_FLAGS "-march=native -O3 -I /usr/include/python3.9/ -I /home/.local/lib/python3.9/site-packages/pybind11/include/")
不起作用。CMAKE_CXX_FLAGS中文件的直接路径导致找不到文件。
我试图将头路径添加到bashrc:
$HOME/.local/lib/python3.9/site-packages/pybind11/include
$ pybind11/pybind11.h
bash: pybind11/pybind11.h: No such file or directory
如果我的路径:
$HOME/.local/lib/python3.9/site-packages/pybind11/include/pybind11
$ pybind11.h
bash: pybind11.h: command not found...
所有这些都不会使标题可见!
当我尝试在C++中导入标头时,这些东西总是有效的。
文件
$HOME/.local/lib/python3.9/site-packages/pybind11/include/pybind11/pybind11.h
肯定在系统中。我可以做得很好:
#include </home/.local/lib/python3.9/site-packages/pybind11/include/pybind11/pybind11.h>
发生了什么事?
我不知道如何使用安装的pybind11[global],所以我只是为我的项目创建了一个git repo,并添加了pybind11作为子模块。
然后在我的cmake中,我按照文档的要求添加了add_subdirectory(extern/pybind11)
。我认为这会在目录中构建源代码。
然后我必须使用target_include_directories(sps INTERFACE extern/pybind11/include)
,以便目标sps中的源可以使用标头。