gpt4 book ai didi

c++ - 在 pybind11 和 C++ 中添加源时,没有给出目标错误的源代码

转载 作者:行者123 更新时间:2023-11-30 02:16:07 28 4
gpt4 key购买 nike

我正在尝试使用 pybind11 使用 C++ 编写的库在 python 中工作。

源文件的编译和构建工作没有错误,但使用 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

这是 pybind 使用的 CMakeLists.txt。

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 模块的方法在同一个项目中对我有用。我尝试过降级 setuptools、pybind11 和 cmake,但它不起作用。我可能是错的,但我认为我所做的唯一改变是在项目中添加了几个 C++ header ,并在 pybind.cpp 文件中添加了一些函数。

最佳答案

您不应该使用相对路径,因为该位置是相对于 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}
)

关于c++ - 在 pybind11 和 C++ 中添加源时,没有给出目标错误的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55359172/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com