ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Pythonlibs3 CMake和macOS

2019-06-08 12:46:34  阅读:578  来源: 互联网

标签:python c-2 cmake macos clion


[更新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 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上,以下行有效:

FIND_PACKAGE(PythonLibs 3 REQUIRED)

但是,在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并使用以下两行修复了我的问题:

FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)

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

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

标签:python,c-2,cmake,macos,clion
来源: https://codeday.me/bug/20190608/1197677.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有