Con*_*nor 4 c++ python macos cmake clion
[更新2]
以下两行,当添加到我的CMake文件中时,成功找到了python 3及其库.这只是在终端工作的原因是因为CLion正在使用其捆绑版本的CMake(3.6.3)和我的终端正在使用的更新版本(3.7.2)正确找到python.
FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)
Run Code Online (Sandbox Code Playgroud)
[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)
Run Code Online (Sandbox Code Playgroud)
但是,在macOS上,它只能使用pythonlibs 2.7.10 /usr/libs/
我尝试过以下方法:
set(Python_ADDITIONAL_VERSIONS 3.6)到我的cmake其他信息:
FIND_PACKAGE(PythonInterp 3)cmake时能够找到我的python3安装./usr/lib/文件夹时,我发现libpython2.7.dylib但是我没有libpython3.6/dylib,/usr/lib/或者/usr/local/lib/.这似乎是因为找到了这个文件/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)提供的包配置文件:Run Code Online (Sandbox Code Playgroud)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)
Run Code Online (Sandbox Code Playgroud)
[更新]对于使用Google Test并通过CMake安装的任何人,将上述行放在Google Test代码之前非常重要.这是因为Google测试会查找python,并找到python2,然后当这两行运行时,他们将无法找到python 3.
如果这两行放在Google Test安装代码之前,则会找到python3并用于google测试.
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |