在 pybind11 和 C++ 中添加源时,没有给出目标错误
No soucers given to target error when adding sources in pybind11 and C++
我正在尝试使用 pybind11 制作一个用 python 编写C++库。
源文件的编译和构建工作没有错误,但是在使用 pip 安装时,生成的文件会抛出此错误。
CMake Error at pybind11/tools/pybind11Tools.cmake:131 (add_library):
Cannot find source file:
../project/variables.cpp
Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
.hpp .hxx .in .txx
Call Stack (most recent call first):
CMakeLists.txt:5 (pybind11_add_module)
CMake Error at pybind11/tools/pybind11Tools.cmake:131 (add_library):
No SOURCES given to target: project
Call Stack (most recent call first):
CMakeLists.txt:5 (pybind11_add_module)
我正在关注cmake_example,我确定该文件存在。实际上,如果我删除文件,则运行时会发生错误
python setup.py sdist
文件夹结构如下所示:
C++ project root folder
|-- C++ Project source files
|-- pybind folder
|------pybind11 source folder
|----------pybind.cpp file
|------pybind11 CmakeLists.txt
|------pybind11 Manifest.in
这是 CMakeLists.txt由 pybind 使用。
cmake_minimum_required(VERSION 2.8.12)
project(project)
add_subdirectory(pybind11)
pybind11_add_module(project
project/pybind.cpp
../project/variables.cpp
../project/instances.cpp
.
.
.
)
C++ 和 pybind 源文件夹都包含在Manifest.in
文件中。此外,引用project/pybind.cpp
文件没有错误。
此外,几个月前,在同一个项目中,这种构建 python 模块的方法对我有用。我已经尝试了降级设置工具,pybind11和cmake,但它不起作用。我可能是错的,但我认为我所做的唯一修改是在pybind.cpp
文件中的项目和 som 函数中添加了几个C++标头。
您不应该使用相对路径,因为位置是相对于 CMake 的某些内部细节给出的!
例如使用:
${CMAKE_PROJECT_DIR}/project/variables.cpp
或者更好的是,使用 FILE
的结果,因为它可以正确填充这些。
即使project/bind.cpp
也应该是相对的,但从某种意义上说,您很幸运,因为 CMake 知道该子文件夹并弄清楚了它。但不要这样做,使用FILE
正确选择它们(你可以是相对的(。
FILE(GLOB PYBIND_SRC
project/pybind.cpp
../project/variables.cpp
../project/instances.cpp
)
pybind11_add_module(project
${PYBIND_SRC}
)
相关文章:
- CMake 错误 - 目标 foo INTERFACE_SOURCES属性包含在源目录中以前缀为前缀的路径
- 错误:在 C++ 目标 c 混合'self'使用未声明的标识符
- CMake on FindOpenGL.cmake 中的错误,当使用导入的目标 OpenGL::GLU?
- 如何修复Clion中目标错误的配方?
- Cmake 错误:无法为目标指定链接库
- make:致命错误:目标命令失败
- 目标提升::<library>已经有导入的位置 + 链接错误
- 对类型的非常量左值引用 - 使用类类型的参数时,目标C++包装器中的错误
- CMAKE 目标链接打开 SSL 错误
- Eclipse:错误:初始化模式失败(无法连接到目标)
- 致命错误LNK1112:在 npm 安装期间,模块计算机类型'X86'与目标计算机类型'x64'冲突
- CMake 错误:无法确定目标的链接语言
- Python目标包装C++类的SWIG错误
- 为什么即使目标数组很小,strcpy 也不会抛出错误?
- 目标C++错误:预期的非限定 id
- 在 pybind11 和 C++ 中添加源时,没有给出目标错误
- CMake错误:导入的目标不适用于Boost版本106300
- 无法为目标错误 CMakeList 指定链接库
- 致命错误LNK1112:通过 vcvarsall .bat x86 运行构建'X86'模块计算机类型'x64'与目标计算机类型冲突
- 错误“没有规则实现目标……”