Seite 1 von 2

[gelöst] QDBus unter Windows ?

Verfasst: 13. November 2006 17:26
von john
Hi Zusammen,

da ich unbedingt eine vernünftige Lösung für IPC suche, habe ich in der neuen QT-Docu von Qt4.2.1 QDBus entdeckt. Nach einigen Sekunden voller Freude, kam auch schon die Ernüchterung. QDBus läuft nur unter Linux. Nach ein bisschen googeln fand ich raus, dass

Christian Ehrlicher
Ralf Habacker
Peter Kuemmel

es vollbrachten DBus zu portieren und QDBus für Windows zu compilieren. Ich fand follgendes Posting in einem Forum:
> -----Original Message-----
> From: Peter Kümmel [mailto:syntheticpp@...]
> Sent: quinta-feira, 13 de Julho de 2006 11:11
> To: KDE on Windows
> Cc: kde-core-devel@...; Paulo Jorge Guedes
> Subject: Re: qdbus on windows
>
> Peter Kümmel wrote:
> > I've fixed qt-copy.
> > Now it is possible to build qdbus also under Windows:
> >
> > - download dbus for msvc and mingw from:
> >
> http://sourceforge.net/project/showfile ... kage_id=19
> 6620&release_id=431436
> >
> > - build Qt for Windows
> > - checkout svn.kde.org/home/kde/trunk/qt-copy/tools/qdbus/
> > - replace with this qdbus folder the original one in the Qt tree
> > - set DBUSDIR to the dbus folder
> > - call qmake -recursive in tools/qdbus
> > - build
> >
> > Peter
>
> Now we could start over compiling kdelibs on Windows with msvc and mingw.
>
> I've fixed kdewin32 which now compiles and installs with both compilers.
>
> dbus is also updated, you could download the new pre-compiled library
> from:
> http://sourceforge.net/project/showfile ... kage_id=19
> 6620&release_id=431436

This is just great! I'll start compiling things and hopefully the Windows dashboard will be back again soon.

Thanks a lot for your work, this are very important news I think.

Paulo
Nun, leider komme ich damit irgendwie nicht zurecht. Wäre toll, wenn hier jemand eine kurze Step für Step Anleitung posten könnte (wenn möglich mit dem "auschecken") wie man QDBus unter Windows zum laufen bekommt. Das wäre echt super!

Schonmal vielen Dank!

Viele Grüße,
Ciao John

Verfasst: 13. November 2006 18:56
von john
Hallo nochmal,

nach fleißigen googeln, bin ich nun doch etwas mehr fündiger geworden. Ich denke hier ist die Lösung:

http://www.kdelibs.com/wiki/index.php/B ... ith_Qt_4.2

Absolut genial, es das funktioniert!! Kompliment an die drei Jungs (ist das nicht "Christian81")? , - auf jeden Fall schonmal vielen Dank für eure tolle Arbeit!

Anmerkung:

-Unter "Compile and install WinDBUS" lässt man einfach den Befehl:
patch -p0 < windows-patch.diff
aus. Ansonsten alles wie beschrieben 1 zu 1 übernehmen. Anschließend kann man wircklich Qt-Windows-Apps mit QtDBus coden. -echt klasse!

-allerdings konnte ich keine Qt-Debug-Version compilieren... (was aber verschmertzbar sein dürfte...)

Viele Grüße,
Ciao John

Verfasst: 14. November 2006 09:49
von Christian81
john hat geschrieben: -Unter "Compile and install WinDBUS" lässt man einfach den Befehl:
patch -p0 < windows-patch.diff
aus.
Aber nur wenn man das source-package anstatt die svn-Version benutzt. Wobei die svn-Version natürlich aktueller ist (was beim derzeitigen Entwicklungsstadium manchmal sehr viel ausmacht)
-allerdings konnte ich keine Qt-Debug-Version compilieren... (was aber verschmertzbar sein dürfte...)
Wieso? Unter Windows wird doch standardmässig debug und release Qt-libs erstellt...

Verfasst: 14. November 2006 13:11
von john
Hallo Christian81,

ich habe verschiedene Versionen benutzt, weil ich irgendwie mal problemchen gehabt habe (mein Fehler....)

Aber, es gab gar keine "windows-patch.diff " Datei. Ich denke die hieß "DBus-win32.patch"

Ich denke, dass mein letzter Versuch die SVN-Version war.
Wieso? Unter Windows wird doch standardmässig debug und release Qt-libs erstellt...
Ja, aber die Compilierung von QDBus brach ab. Daraufhin hab ich mal es nur mit "make release" probiert und es hat geklappt. Werde damit aber noch einiges ausprobieren, vielleicht kalpt es ja doch noch...

Vielen Dank,
Ciao John

Verfasst: 14. November 2006 13:53
von Christian81
john hat geschrieben: Aber, es gab gar keine "windows-patch.diff " Datei. Ich denke die hieß "DBus-win32.patch"
Sie wurde zur Klarheit umbenannt, ist aber mittlerweile auf kdelibs.com auch korrigiert.
Wegen dem Debug: Du musst sehen dass Du dbus-1.dll und dbus-1d.dll erstellst. D.h. Du musst im Visual Studio Debug und Release kompilieren & installieren - geht leider nicht anders.

Verfasst: 14. November 2006 15:22
von john
Hi Christian81,

hm, ich arbeite nur mit MinGW und kann auch nicht aus Lizenz Gründen Visual Studio verwenden. Ich werde noch etwas ausprobieren müssen, um die dbus-1d.dll zu erstellen. Aber ich denke, das wird schon klappen. Werde dann nochmals hier posten, damit auch andere die QDBus verwenden wollen (und MS-Visual-Studio auch nicht verwenden können) hier nach lesen können.

Viele Grüße,
Ciao John

Verfasst: 14. November 2006 15:24
von Christian81
Dort ist es gleich, cmake einmal als Option -DCMAKE_BUILD_TYPE=Debug und einmal Release übergeben (oder in CMakeSetup einstellen) und beides mal installieren. Am besten zwei build-Verzeichnisse erstellen...

Verfasst: 25. November 2006 19:04
von Christian81
Das aktuelle windbus SVN funktioniert insoweit dass qdbus auch geht.

Verfasst: 26. November 2006 18:17
von john
vielen Dank für die Nachricht!

Verfasst: 19. Juli 2007 00:12
von john
Hallo Christian81,

habe nun mal wieder WinDBus ausprobiert. Ich machte einen SVN ceckout. Habe alles ausgechekt. Ich schaffe es einfach nicht, ein Debug-Release zu erstellen. Hier mal mein Config:

Code: Alles auswählen

cmake -G "MinGW Makefiles" -CMAKE_BUILD_TYPE=Debug -DDBUS_USE_EXPAT=OFF -DDBUS_INSTALL_SYSTEM_LIBS=1 -DLIBXML2_INCLUDE_DIR=D:\CVS\work\windbus\libxml2-2.6.28\include -DLIBXML2_LIBRARIES=D:\CVS\work\windbus\libxml2-2.6.28\lib\libxml2.lib ../src/cmake
die Ausgabe nach der Config ist:
D:\CVS\work\windbus\debug_build>cmake -G "MinGW Makefiles" -CMAKE_BUILD_TYPE=Debug -DDBUS_USE_EXPAT=OFF -DDBUS_INSTALL_S
YSTEM_LIBS=1 -DLIBXML2_INCLUDE_DIR=D:\CVS\work\windbus\libxml2-2.6.28\include -DLIBXML2_LIBRARIES=D:\CVS\work\windbus\li
bxml2-2.6.28\lib\libxml2.lib ../src/cmake
loading initial cache file MAKE_BUILD_TYPE=Debug
Error processing file:MAKE_BUILD_TYPE=Debug
-- Could not find the location of the windows supplementary packages which is
environment variable KDEWIN_DIR
<ProgramFiles>/kdewin-mingw
<ProgramFiles>/kdewin
<ProgramFiles>/kdewin32
<ProgramFiles>/gnuwin32

--
-- for better code reading the dbus library could be splitted into three libraries:
-- dbus-lib-client, dbus-lib-generic, and dbus-lib-util (installing is then not possible)
-- enable splitting: -Dsplitlib=1
--

set -DDBUS_INSTALL_SYSTEM_LIBS=1 to install runtime libraries too
set DBUSDIR (environment or cmake option) to overwrite the default install directory


D-BUS 1.1.1-2
==========

prefix:
exec_prefix:
libdir: /lib
bindir: /bin
sysconfdir: /etc
localstatedir:
datadir: /data
source code location: D:/CVS/work/windbus/src/cmake/..
c compiler: gcc.exe
cflags:
cflags debug: -g
cflags release: -O3 -DNDEBUG
cxx compiler: g++.exe
cxxflags:
cxxflags debug: -g
cxxflags release: -O3 -DNDEBUG
64-bit int: long long
32-bit int: int
16-bit int: short
Doxygen: DOXYGEN-NOTFOUND
xmlto: XMLTO-NOTFOUND
gcc coverage profiling: OFF
Building unit tests: ON
Building verbose mode: ON
Building w/o assertions: OFF
Building w/o checks: OFF
installing system libs: ON
Building Doxygen docs:
Using XML parser: LibXML2
System bus address: tcp:host=localhost,port=12434
Session bus address: tcp:host=localhost,port=12434

NOTE: building with unit tests increases the size of the installed library and renders it insecure.
NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance.

NOTE: building with assertions increases library size and decreases performance.

-- Configuring done
-- Generating done
-- Build files have been written to: D:/CVS/work/windbus/debug_build

D:\CVS\work\windbus\debug_build>
Er meckert ja bereits mit:
Error processing file:MAKE_BUILD_TYPE=Debug

Es lässt sich alles einwandfrei compilieren und linken. Jedoch bekomme ich es einfach nicht hin, die "libdbus-1d.dll" und die "libdbus-1d.a" zu erzeugen. Wie gesagt ich habe immer die Release Versionen ohne den "d" der beiden Datein. Würde mich um jeden Tipp sehr freuen.

Vielen Dank und viele Grüße,
Ciao john

PS.: Wie ist eigentlich das SVN-Repository genau aufgebaut? Was sollte ich auschecken, wenn ich nur an WinDBus interessiert bin? Trunk? Branches/Patched/?, Branches/Wince/? oder dbuscxx? (ich habs einfach mit Branches/Patched probiert...

Verfasst: 19. Juli 2007 06:36
von Christian81
trunk ist ok

-CMAKE_BUILD_TYPE=Debug ist falsch -> -DCMAKE_BUILD_TYPE=Debug

Was mich gerade wundert ist, dass der das kdewin package sucht... muss mal schauen warum.
Mit dem kdewin-installer kannst du auch eine precompiled Version installieren: http://download.cegit.de/kde-windows/in ... -0.7.4.exe

Verfasst: 20. Juli 2007 00:06
von john
Hallo Christian81,
-CMAKE_BUILD_TYPE=Debug ist falsch -> -DCMAKE_BUILD_TYPE=Debug
wow! Super! Jetzt klappt es! Die Datei heißt nun auch "libdbus-1.dll" kann und soll ich wohl einfach unbennen (in "libdbus-1d.dll") ?
Mit dem kdewin-installer kannst du auch eine precompiled Version installieren: http://download.cegit.de/kde-windows/in ... -0.7.4.exe
ja, aber leider kann ich mit dieser Version Qt4.2.3 oder Qt4.3.0 nicht linken...

Vielen Dank, echt Klasse!

Verfasst: 20. Juli 2007 06:54
von Christian81
john hat geschrieben: wow! Super! Jetzt klappt es! Die Datei heißt nun auch "libdbus-1.dll" kann und soll ich wohl einfach unbennen (in "libdbus-1d.dll") ?
Nein, du musst Debug und Release erstellen. Am besten ein .vcproj erstellen lassen und beide kompilieren (und installieren)
john hat geschrieben: ja, aber leider kann ich mit dieser Version Qt4.2.3 oder Qt4.3.0 nicht linken...
Benutzt Du msvc < 8?
Habe gestern 4.3.0 aktualisiert da dort noch ein Fehler drin war. Kannst es ja nochmal ausprobieren.

Verfasst: 20. Juli 2007 14:36
von john
Hi Christian,

ich benutze MinGW. Ich denke, dass es jetzt schon klappt. Wenn ich die Option "-DCMAKE_BUILD_TYPE=Debug" verwende, hat die "libdbus-1.dll" ca. 2,5 MB. Mit der Option "-DCMAKE_BUILD_TYPE=Release" hat sie ca. 0,5 MB.

Ich habe es grad nochmal mit der Version 1.1.0 probiert. Hier wird auch die "libdbus-1d.dll" erzeugt.

Mit der Version 1.1.1-2 wird anstatt der "libdbus-1d.dll" die "libdbus-1.dll" erstellt. Jedoch unterscheidet sich die Dateigröße wenn man die Option "DCMAKE_BUILD_TYPE" setzt.

Gruß John

PS.: ich teste noch ein bisschen und schaue mir mal die CMakeLists.txt an. -vermute, dass es die richtige Config-Datei von cmake ist. -kenne mich mit cmake nicht so gut aus... ;-)

Verfasst: 20. Juli 2007 14:51
von john
in der Datei "CMakeLists.txt" war:

set (CMAKE_DEBUG_POSTFIX "d")

in dem If-Block: if(CMAKE_BUILD_TYPE STREQUAL "Debug") auskommentiert.

Habe die Raute entfernt und nun kommt auch die "libdbus-1d.dll" raus. Vermute, dass nun alles passt. Werde am Wochenende mal Qt4.3.0 mit DBus statisch und shared compilieren. Bin gespannt...