使用cmake查找正确的Python框架

时间:2009-11-11 21:35:04

标签: python frameworks macos cmake macports

我在Snow Leopard计算机上使用macports版本的python,并使用cmake为它构建跨平台扩展。我使用CMakeLists.txt

中的以下命令在系统上搜索python解释器和库
include(FindPythonInterp)
include(FindPythonLibs  )

然而,虽然cmake在/opt/local/bin中确定了正确的解释器,但它试图链接错误的框架 - 即系统Python框架。

-- Found PythonInterp: /opt/local/bin/python2.6
-- Found PythonLibs: -framework Python

这会导致以下运行时错误

Fatal Python error: Interpreter not initialized (version mismatch?)

只要将-framework Python替换为/opt/local/Library/Frameworks/Python.framework/Python,事情就会按预期发挥作用。

如何针对

中找到的正确Python框架进行cmake链接
/opt/local/Library/Frameworks/Python.framework/Python

而不是

中的系统
/System/Library/Frameworks/Python.framework/Python

2 个答案:

答案 0 :(得分:5)

~/.bash_profile

中添加以下内容
export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks

至少暂时解决问题。显然,python解释器和cmake使用的python框架之间的这种不一致是一个有希望在新版本中修复的错误。

答案 1 :(得分:1)

我对CMake并不熟悉,但使用Apple版本的gcc / ld,您可以传递-F标志来指定新的框架搜索路径。例如,-F/opt/local/Library/Frameworks将在MacPorts的frameworks目录中进行搜索。如果你可以使用CMake指定这样的标志,它可以解决你的问题。