[Marble-devel] MarbleWidgetPlugin on OSX

Martijn Kuipers martijn.kuipers at gmail.com
Wed Sep 9 17:02:10 CEST 2009


Dear list,

MarbleWidget is great. So nice I wanted to try it on my MacBook (OS-X  
10.5), which I got a week ago.
This is my first try with Qt, other than "Hello World!". I ran into  
some troubles. Not really any info via google, so I thought I would  
write my steps down while figuring it out. Here it goes:

After a lot of struggling I managed to get the MarbleWidgetPlugin to  
show up in (Qt)Designer.
Unfortunately QtCreator still does not show them (it has "invisible"  
fields for them).


Newby: New to MarbleWidget, new to Qt, new to OS-X
------------------------------------------------------------------------------
Follow the instructions on http://techbase.kde.org/Projects/Marble/MarbleDesigner 
.
I worked with the source-tar as neither SVN heads worked for me.

Make sure you switch the DESIGNER plugin option on:
cmake -DQTONLY=ON -DWITH_DESIGNER_PLUGIN=ON ../marble

If you run make, you probably get some errors like
MarbleWidgetPlugin.h:26: Error: Undefined interface


The header file actually has this comment related to MacOSX, so just  
follow that
// Workaround: moc on osx is unable to find this file, when prefix  
with QtDesigner/
// moc also doesn't respect Q_OS_* macros, otherwise I could ifdef this.
#include <QtDesigner/QDesignerCustomWidgetInterface>

Just delete the QtDesigner/ part to remain
#include <QDesignerCustomWidgetInterface>

You must do this in the following 3 files:
../marble/src/plugins/designer/marblewidget/MarbleWidgetPlugin.h
../marble/src/plugins/designer/latloneditwidget/LatLonEditPlugin.h
../marble/src/plugins/designer/navigator/MarbleNavigatorPlugin.h

Now it compiles but creates bundles (?) and I needed dynamic libraries  
(not sure what the differences are)
So we need to recompile the 3 widgets by hand, luckily the command  
line argument to compile them are given in the linkt.txt file. Let's  
start with MarbleWidgetPlugin:
Go to
marble_build/src/plugins/designer/marblewidget

The link.txt fille is in CMakeFiles/MarbleWidgetPlugin.dir
The file contains
/usr/bin/c++   -bundle -headerpad_max_install_names  -o  
libMarbleWidgetPlugin.so CMakeFiles/MarbleWidgetPlugin.dir/MarbleWidgetP
lugin.o CMakeFiles/MarbleWidgetPlugin.dir/qrc_marble.o -framework  
QtCore -framework QtDBus -framework QtGui -framework QtXml -fr
amework QtSvg -framework QtNetwork ../../../lib/libmarblewidget. 
0.8.0.dylib -framework QtCore -framework QtDBus -framework QtGui
  -framework QtXml -framework QtSvg -framework QtNetwork -framework  
QtScript -framework QtWebKit -framework ApplicationServices

We need to replace -bundle with -dynamiclib and  
libMarbleWidgetPlugin.so with libMarbleWidgetPlugin.dylib and copy the  
resulting dylib file to the right location
cp libMarbleWidgetPlugin.dylib /Developer/Applications/Qt/plugins/ 
designer/.

Follow the same procedure for the navigator and latloneditwidget plugins


I hope this helps someone. Please if there is a simples way of doing  
this, please let me know!

Kind regards,
Martijn


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/marble-devel/attachments/20090909/05afc876/attachment.htm 


More information about the Marble-devel mailing list