如何使用cmake链接Python3 Libs?

Fab*_*ian 8 cmake boost-python python-3.x

我通过安装了Python3 brew install python3.但是,cmake找不到PythonLibs 3.这是我的标题CMakeLists.txt.

cmake_minimum_required(VERSION 3.0)
find_package(PythonLibs 3 REQUIRED)
Run Code Online (Sandbox Code Playgroud)

当我运行cmake时,我收到此错误消息

Could NOT find PythonLibs: Found unsuitable version "2.7.6", but required is at least "3" (found /usr/lib/libpython2.7.dylib)
Run Code Online (Sandbox Code Playgroud)

不知道我做错了什么.

Oli*_*erM 7

因为您使用的是 CMake >= 3.0,所以您可以find_package(Python COMPONENTS Interpreter Development)看到:https ://cmake.org/cmake/help/v3.12/module/FindPython.html

例如,这将为您提供:

find_package(Python COMPONENTS Interpreter Development)

message("Python_FOUND:${Python_FOUND}")
message("Python_VERSION:${Python_VERSION}")
message("Python_Development_FOUND:${Python_Development_FOUND}")
message("Python_LIBRARIES:${Python_LIBRARIES}")
Run Code Online (Sandbox Code Playgroud)

结果:

Python_FOUND:TRUE
Python_VERSION:3.8.0
Python_Development_FOUND:TRUE
Python_LIBRARIES:/usr/lib/x86_64-linux-gnu/libpython3.8.so
Run Code Online (Sandbox Code Playgroud)


Fel*_*ler 5

根据我的经验,发生这种情况是因为我使用的是不了解Python 3.4的较旧版本的cmake(2.8而不是3 +)(在3.3之后就放弃了)。

解决方案是进入CMakeLists.txt文件,并在find_package上方添加“其他版本”指令:

set(Python_ADDITIONAL_VERSIONS 3.4) find_package(PythonLibs 3 REQUIRED)

您可能还可以通过升级cmake版本来修复它。但是以上内容对我来说适用于cmake 2.8