开发者

Finding the correct Python framework with cmake

I am using the macports version of python on a Snow Leopard computer, and using cmake to build a cross-platform extension to it. I search for the python interpreter and libraries on the system using the following commands in CMakeLists.txt

include(FindPythonInterp)
include(FindPythonLibs  )

However, while cmake identified the correct interpreter in /opt/local/bin, it tries to link against the wrong framework - namely the system Python framework.

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

And this causes the following runtime error

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

As soon as I replace -framework Python with /opt/local/Library/Frameworks/Python.framework/Python things seem to work as expected.

How can I make cmake link against the correct Python framework found in

/opt/local/Library/Frameworks/Python.framework/Python

rather than the system one开发者_如何学JAVA in

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

?


Adding the following in ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks

fixes the problem at least temporarily. Apparently, this inconsistency between the python interpreter and the python framework used by cmake is a bug that should be hopefully fixed in the new version.


I am not intimately familiar with CMake, but with the Apple version of gcc/ld, you can pass the -F flag to specify a new framework search path. For example, -F/opt/local/Library/Frameworks will search in MacPorts' frameworks directory. If you can specify such a flag using CMake, it may solve your problem.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜