使用cmake查找正确的Python框架

使用cmake查找正确的Python框架,python,frameworks,macos,cmake,macports,Python,Frameworks,Macos,Cmake,Macports,我正在雪豹计算机上使用macports版本的python,并使用cmake为其构建跨平台扩展。我使用CMakeLists.txt中的以下命令在系统上搜索python解释器和库 include(FindPythonInterp) include(FindPythonLibs ) 然而,尽管cmake在/opt/local/bin中识别了正确的解释器,但它试图链接到错误的框架,即系统Python框架 -- Found PythonInterp: /opt/local/bin/python2.6

我正在雪豹计算机上使用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?)
只要我用
/opt/local/Library/Frameworks/Python.framework/Python
替换
-framework-Python
,事情似乎就如预期的那样进行了

如何根据中找到的正确Python框架创建cmake链接

/opt/local/Library/Frameworks/Python.framework/Python
而不是系统中的一个

/System/Library/Frameworks/Python.framework/Python

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

~/.bash\u profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks
至少暂时解决了这个问题。显然,python解释器和cmake使用的python框架之间的这种不一致性是一个bug,希望在新版本中得到修复