当前位置:首页 > 操作系统 > MacOs

Pythonlibs3 CMake和macOS

[更新2]

以下两行,当添加到我的CMake文件中时,成功找到了python 3及其库.这只是在终端工作的原因是因为CLion正在使用其捆绑版本的CMake(3.6.3)和我终端使用的更新版本(3.7.2)正确找到python.

<code>FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)
</code>

[UPDATE]我得到了cmake文件,但是,当我从终端运行时它只找到python3库.从CLion运行时,我收到以下错误:

CMake Error: The following variables are used in this project, but
they are set to NOTFOUND. Please set them or make sure they are set
and tested correctly in the CMake files: PYTHON_LIBRARY (ADVANCED)

[原始帖子]

我正在开发一个跨平台的C应用程序,并使用PythonLibs 3和boost_python来从python调用c方法.在ubuntu这工作正常但是,在macOS上,我似乎无法让cmake识别pythonlibs3.

在ubuntu上,以下行有效:

<code>FIND_PACKAGE(PythonLibs 3 REQUIRED)
</code>

但是,在macOS上,它只能在/usr/libs /中使用pythonlibs 2.7.10.

我尝试过以下方法:

>使用python3虚拟环境,然后运行cmake.
>将set(Python_ADDITIONAL_VERSIONS 3.6)添加到我的cmake

其他信息:

>我用brew安装了python3(3.6),它位于/usr/local/bin中
>我使用的是cmake版本3.6.3
>当我写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)

它能够找到库但我得到错误:

Could not find a package configuration file provided by “PythonLibs”
(requested version 3) with any of the following names:

06002

Add the installation prefix of “PythonLibs” to CMAKE_PREFIX_PATH or
set “PythonLibs_DIR” to a directory containing one of the above
files. If “PythonLibs” provides a separate development package or
SDK, be sure it has been installed.

另外,如果我尝试在不使用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)

错误如下:

Unknown CMake command “PYTHON_ADD_MODULE”.

原因似乎是因为此函数由FindPythonLibs.cmake提供,它由find_package(Pythonlibs)加载,因此,如果不使用它来定位PythonLibs,则无法调用此函数.

解决方法:

如上所述,在问题更新中,转到CMake 3.7.2并使用以下两行修复了我的问题:

<code>FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)
</code>

[更新]对于使用Google Test并通过CMake安装的任何人,将上述行放在Google Test代码之前非常重要.这是因为Google测试会查找python,并找到python2,然后当这两行运行时,他们将无法找到python 3.

如果这两行放在Google Test安装代码之前,则会找到python3并用于google测试.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐