[CMake] Various problems deploying a python module

Michael Wild themiwi at gmail.com
Fri Jun 25 10:58:47 EDT 2010


On 25. Jun, 2010, at 16:32 , Mark Moll wrote:

> 
> On Jun 25, 2010, at 9:11 AM, Janosch Peters wrote:
> 
>> On 2010-06-25 15:45:37 +0200, Michael Hertling said:
>> 
>>> On 06/25/2010 03:17 PM, Janosch Peters wrote:
>>>> On 2010-06-21 07:01:36 +0200, Michael Hertling said:
>>>>> 8d87d12
>>>> What's that? Leet speak?
>>> No, these are the first seven and sufficiently unambiguous digits of
>>> the SHA-1 sum of the commit in CMake's Git repository that removes
>>> the framework related lines from FindPythonLibs.cmake
>> 
>> Ok. But the python dilemma still remains:
>> 
>> 1. FindPythonInterp and FindPythonLibs might still produce inconsistent results (e.g. libs and interpreter of different python versions)
>> 2. AFAIK you cannot specify a specific python version you which to include/link
>> 
>> I think someone on the list suggested to merge both modules into one, which would help making the results consistent. Is this (or any other solution) on your todo list?
> 
> 
> I suggested the merge, and proposed to add a function to check for the existence of python modules:
> http://www.cmake.org/pipermail/cmake/2010-June/037468.html
> 
> On my OS X machine, the headers and libs for different python versions also exist in the more common UNIX places (/usr/include/python2.x, /usr/lib/libpython2.x.dylib, /usr/lib/python2.x/config/libpython2.x.a, and corresponding MacPorts locations). I don’t know of any way you can specify a specific version of a framework, so (at least for python) it seems easier to drop framework support altogether and just use the UNIX paths.
> 
> -- 
> Mark

To chime in...

For one, the libraries in /usr/lib are symlinked to the framework:

$ readlink /usr/lib/libpython2.6.dylib
../../System/Library/Frameworks/Python.framework/Versions/2.6/Python


However, I think it's really difficult to guarantee consistency. If the code to be compiled contains stuff like the following

#ifdef __APPLE__
#include <Python/Python.h>
#else
#include <Python.h>
#endif

the compiler will compile against the latest framework installation it finds on the search path (probably /System/Library/Frameworks/Python.framework), but for linking whatever CMake (or the user by modifying the cache) chooses to pick will be used, be that the framework installation or some library-installation (Fink, MacPorts, /usr/lib, user-installed, ...).

Michael


More information about the CMake mailing list