8

我在 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

?

4

2 回答 2

5

在中添加以下内容~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks

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

于 2009-11-13T08:55:17.393 回答
1

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

于 2009-11-12T19:26:43.197 回答