[英]Pythonlibs3 CMake and macOS
[更新2]
以下两行,当添加到我的CMake文件中时,成功找到了python 3及其库。 这只是在终端工作的原因是因为CLion正在使用其捆绑版本的CMake(3.6.3)和我终端使用的更新版本(3.7.2)正确找到python。
FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)
[UPDATE]我得到了cmake文件,但是,当我从终端运行时它只找到python3库。 从CLion运行时,我收到以下错误:
CMake错误:此项目中使用以下变量,但它们设置为NOTFOUND。 请设置它们或确保它们在CMake文件中正确设置和测试:PYTHON_LIBRARY(ADVANCED)
[原始帖子]
我正在开发一个跨平台的C ++应用程序,并使用PythonLibs 3和boost_python来从python调用c ++方法。 在ubuntu这工作正常但是,在macOS上,我似乎无法让cmake识别pythonlibs3。
在ubuntu上,以下行有效:
FIND_PACKAGE(PythonLibs 3 REQUIRED)
但是,在macOS上,它只能在/usr/libs/
pythonlibs 2.7.10。
我尝试过以下方法:
set(Python_ADDITIONAL_VERSIONS 3.6)
添加到我的cmake 其他信息:
FIND_PACKAGE(PythonInterp 3)
cmake能够找到我的python3安装。 /usr/lib/
文件夹时,我找到了libpython2.7.dylib
但我在/usr/lib/
或/usr/local/lib/
没有libpython3.6/dylib
。 这似乎是因为这个文件位于/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib
。 如果我将libpython3.6的位置添加到我的find_package中,
FIND_PACKAGE(PythonLibs 3 PATHS /usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/ REQUIRED)
它能够找到库但我得到错误:
找不到“PythonLibs”提供的包配置文件
(请求的版本3)具有以下任何名称:PythonLibsConfig.cmake pythonlibs-config.cmake
将“PythonLibs”的安装前缀添加到CMAKE_PREFIX_PATH或将“PythonLibs_DIR”设置为包含上述文件之一的目录。 如果“PythonLibs”提供单独的开发包或SDK,请确保它已安装。
另外,如果我尝试在不使用find_package的情况下设置python变量,它可以找到库:
SET(PYTHON_INCLUDE_PATH /usr/local/include/python3.6mu) SET(PYTHON_EXECUTABLE /usr/local/bin/python3.6mu) SET(PYTHON_INCLUDE_DIR /usr/local/include/python3.6mu) SET(PYTHON_LIBRARIES /usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/)
但是后来我的cmake中出现了以下错误:
PYTHON_ADD_MODULE(${PYRITMO_LIB} src/pythonwrappers.cpp)
错误如下:
未知的CMake命令“PYTHON_ADD_MODULE”。
原因似乎是因为此函数由FindPythonLibs.cmake
提供,它由find_package(Pythonlibs)
加载,因此,如果不使用它来定位PythonLibs,则无法调用此函数。
如上所述,在问题更新中,转到CMake 3.7.2并使用以下两行修复了我的问题:
FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)
[更新]对于使用Google Test并通过CMake安装的任何人,将上述行放在Google Test代码之前非常重要。 这是因为Google测试会查找python,并找到python2,然后当这两行运行时,他们将无法找到python 3。
如果这两行放在Google Test安装代码之前,则会找到python3并用于google测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.