[gelöst] QDBus unter Windows ?

Alles rund um die Programmierung mit Qt
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

[gelöst] QDBus unter Windows ?

Beitrag 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
Zuletzt geändert von john am 23. August 2007 22:32, insgesamt 1-mal geändert.
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das aktuelle windbus SVN funktioniert insoweit dass qdbus auch geht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag von john »

vielen Dank für die Nachricht!
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag 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...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag 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!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag 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... ;-)
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag 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...
Antworten