[Qgis-developer] Building ".so" plugin, not ".dylib" on Mac

William Kyngesburye woklist at kyngchaos.com
Tue Oct 30 08:20:09 PDT 2012


On Oct 30, 2012, at 9:51 AM, Tasos Varoudis wrote:

> Im not doing both together:
> one in "-=" and the bundle is "+="
> 
I missed the detail there

> This is what I get
> g++-4.2 -headerpad_max_install_names -FXXX/lib -arch x86_64 -single_module -bundle -Xarch_x86_64 -mmacosx-version-min=10.6 -o libTest.dylib debug/XX.o ….
> 
> file libTest.dylib              
> libTest.dylib: Mach-O 64-bit dynamically linked shared library x86_64
> 
That's very odd.  The -bundle option should create a bundle but you're getting a dynamic library.  The only thing I can think of (and equally very odd) is that the linker sees the .dylib extension on the output file and thinks you really meant a dynamiclib.

> 
> Im not sure if Im don't something else wrong. On linux everything work perfect.
> 
> Where should I put a dylib file in order to load it as a QGIS plugin on a Mac OSX?
> 

Anyways, as I said, a dynamiclib (that's what they are on linux, linux doesn't have the shared lib/module distinction) should still be loadable as a plugin.  As long as it has a .so extension (it will not load a .dylib as a plugin), and it's in the plugins folder with the rest of the plugins, QGIS will load it.  if it is causing a crash, then something else is probably wrong (and it's beyond my skills).

The crash log might help figure out what's wrong.

> Best
> 
> 
> On 30 Oct 2012, at 14:40, William Kyngesburye <woklist at kyngchaos.com> wrote:
> 
>> If you are doing both of those at the same time, I'm guessing that dynamiclib (probably synonym for dylib) is overriding bundle.
>> 
>> You can figure out what it really linked as with:
>> 
>> file /path/to/your/plugin
>> 
>> But then, the difference between a dylib and a bundle is not a big one - a dylib can be loaded like a bundle.  Maybe there is a different problem?
>> 
>> On Oct 30, 2012, at 9:22 AM, Tasos Varoudis wrote:
>> 
>>> Hi,
>>> 
>>> So something like that should work:
>>> 
>>> macx:QMAKE_LFLAGS_PLUGIN -= -dynamiclib
>>> macx:QMAKE_LFLAGS_PLUGIN += -bundle
>>> 
>>> But it didn't.
>>> I still get a dylib file and if I rename it to .so QGIS will crash (as it really a dylid and qgis is confused) or not load at all (if I leave it as dylib and move it to the plugin folder).
>>> 
>>> Thanks
>>> Tasos 
>>> 
>>> 
>>> On 30 Oct 2012, at 13:46, William Kyngesburye <woklist at kyngchaos.com> wrote:
>>> 
>>>> You need to use a MODULE type for the cmake ADD_LIBRARY().  I don't know how to do this with qmake, but the linker flag is -bundle instead of -dylib.
>>>> 

-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/

"Time is an illusion - lunchtime doubly so."

- Ford Prefect




More information about the Qgis-developer mailing list