我正在尝试使用setuptools通过CMake安装一个带有Pybind11接口的C++库。对于将CMake与setuptools一起使用,我使用了以下答案中的代码:扩展setuptools扩展以使用www.example.com中的CMakesetup.py?我可以使用cmake
手动构建库。但不幸的是,当在项目的根目录中执行pip install .
时,构建失败。虽然第一次调用cmake(self.spawn(['cmake', str(cwd)] + cmake_args)
)时没有任何错误,但执行第二次调用(self.spawn(['cmake', '--build', '.'] + build_args)
)时出现以下错误:
/users/thoerman/miniconda3/envs/postproc_np_products/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot open output file /users/thoerman/postproc_np_products/build/lib.linux-x86_64-cpython-37/postproc_ops_cpp.cpython-37m-x86_64-linux-gnu.so: Is a directory
collect2: error: ld returned 1 exit status
gmake[3]:***[/users/thoerman/postproc_np_products/build/lib.linux-x86_64-cpython-37/postproc_ops_cpp.cpython-37m-x86_64-linux-gnu.so] Error 1
gmake[2]:***[CMakeFiles/postproc_ops_cpp.dir/all] Error 2
gmake[1]:***[CMakeFiles/postproc_ops_cpp.dir/rule] Error 2
gmake:***[postproc_ops_cpp] Error 2
但是,当在build_temp
目录中的命令行上运行完全相同的命令时,一切都正常。
有人能给我一个提示吗,哪里可能出了问题?
1条答案
按热度按时间mrphzbgm1#
在进一步挖掘问题后,我自己找到了解决办法。问题出在线条上
这为要构建的目标创建了一个目录。构建目标失败了,因为已经有一个同名的目录。我可以通过替换第二行来解决这个问题,如下所示: