CMake构建时报错缺少Python_NumPy_INCLUDE_DIRS如何解决
修复方案
- 第一步:安装Anaconda环境对应的NumPy
你之前安装的python-dev是系统自带Python2的开发依赖,对你使用的Anaconda Python3.7不生效,先执行命令安装对应版本的NumPy:
/home/dfw/anaconda3/bin/python -m pip install numpy
- 第二步:清空CMake构建缓存
CMake会缓存历史查找结果,旧的错误缓存会导致新配置参数不生效,需要完全清空构建目录后重新配置:
# 假设你的构建目录是源码根目录下的build文件夹 rm -rf build && mkdir build && cd build
- 第三步:使用适配新版CMake的配置参数
CMake 3.12+版本的FindPython模块使用Python_前缀的变量,你之前使用的PYTHON_前缀是旧版本模块的参数,不会生效,正确的配置命令如下:
cmake .. \ -DPython_ROOT=/home/dfw/anaconda3 \ -DPython_EXECUTABLE=/home/dfw/anaconda3/bin/python \ -DPython_NumPy_INCLUDE_DIRS=$(/home/dfw/anaconda3/bin/python -c "import numpy; print(numpy.get_include())")
如果项目明确要求查找Python3,可将所有变量前缀替换为Python3_,比如-DPython3_ROOT、-DPython3_EXECUTABLE。
问题根因
CMake默认优先查找系统路径下的Python版本,你之前设置的参数适配旧版CMake的Python查找逻辑,同时缺失Anaconda环境下的NumPy头文件路径,导致CMake识别到了系统Python2.7但找不到对应NumPy,也没有正确定位到你指定的Anaconda Python3.7。
内容的提问来源于stack exchange,提问作者dfsdaffewe
相关产品推荐
相关产品推荐

