Shared Object / DLL erstellen

Alles rund um die Programmierung mit Qt
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Danke für eure antworten!

Jetzt klickst bei mir etwas! :D
Unter Linux gibt es keine Programm Verzeichnisse das ist eine überflüssige Erfindung von Windows.
Da war auch nicht das verzeichnis "Programm" oder "Programme" gemeint, sondern ich hätte alles einfach in einem verzeichnis zusammengefasst!

Damit das system nicht so zugemüllt wird, wenn ich alles verstreue.

Aber da das gängige modell dieses hier zu sein scheint:

Binary: /usr/bin
Lib: /urs/lib
man: /usr/share/man
images: /usr/share/pixmaps
other: /usr/share/apps/

Linken für Desktop und Startmenu: /usr/share/applications/

Werd ich mich auch daran halten.

Hätte den ansatz von "alles in einem verzeichnis zusammenfassen" deswegen übernommen, da ich sonst immer nur auf windows programmiere.

Aber trotzdem danke!

Jetzt bleibt noch: Wie verteile ich alles? Von hand? Mit einem script?

Danke!
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Beitrag von jd »

Nö, das macht make.

Unter einer Installation mit 3-Satz versteht man ./configure; make; make install

Vereinfachte darstellung:
configure - checkt ob alle benötigten libs da sind um das Programm zu kompilieren und erstellt dir dann ein Makefile

make - kompiliert alles

make install - kopiert dann alles dahin wo es hin soll.

Hier mal ein .pro-file was das alles macht.

Code: Alles auswählen

TEMPLATE = app
TARGET = ./bin/qsystem
QT += core \
    gui \
    svg \
    network
HEADERS += src/aboutdialog/aboutdialog.h \
SOURCES += src/aboutdialog/aboutdialog.cpp \
    ./src/main.cpp
FORMS += ui/aboutdialog.ui \
    ./ui/preferencesdialog.ui \
    ./ui/mainwindow.ui
RESOURCES += ./images/qsystem.qrc
UI_DIR += ./build/
MOC_DIR += ./build/moc
RCC_DIR += ./build
OBJECTS_DIR += ./build/obj
CONFIG += warn_on \
    qt \
    debug
TRANSLATIONS += ./ts/qsystem_de.ts
icon.path = /usr/share/pixmaps/
icon.files = ./images/qsystem.png
desktop.path = /usr/share/applications/
desktop.files = ./other/*.desktop
target.path = /usr/bin
translations.path = /usr/share/apps/qsystem/translations
translations.files = ./ts/*.qm
win32:CONFIG += qt \
    release \
    warn_on
unix:INSTALLS = icon \
    desktop \
    target \
    translations
qmake; make; make install; macht dann genau das wie von mir beschrieben. Da aber qmake nicht geläufig ist, muss configure her. Das geht auf 2 wege entweder du setzt dich mit GNU autotools aus einander, ist aber sehr komplex und kann zu einer Qual werden, aber lohnt sich. Oder du nimmst qconf(http://delta.affinix.com/qconf/).

http://doc.trolltech.com/4.4/qmake-envi ... l#installs

Das ist zwar sehr speziell Debian bezogen, aber die Pfade sind alle portierbar... http://www.debian.org/doc/maint-guide/

Wenn du weißt wie das ganze funktioniert, kannst du dich an das Paketsystem wagen und die Stärken nutzen: Kleines HowTo dazu findest du hier:
http://magazin.c-plusplus.de/artikel/So ... n%20System
ist aber auch Debian...
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Ok, danke für die antworten!

Besonders das hier bringt mich weiter:

Code: Alles auswählen

TRANSLATIONS += ./ts/qsystem_de.ts
icon.path = /usr/share/pixmaps/
icon.files = ./images/qsystem.png
desktop.path = /usr/share/applications/
desktop.files = ./other/*.desktop
target.path = /usr/bin
translations.path = /usr/share/apps/qsystem/translations
translations.files = ./ts/*.qm
win32:CONFIG += qt \
    release \
    warn_on
unix:INSTALLS = icon \
    desktop \
    target \
    translations 
Wegen debian bezogen, ich verwende ubuntu!

Aber ich werd mir die links ansehen, danke!
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Beitrag von jd »

Na perfekt. Buntkuh baut auf Debian auf und verwendet somit das APT Paketsystem.

Hier mal die Datei für eine Desktop-Verknüpfung. Da stehen keine Pfad angaben.

Code: Alles auswählen

[Desktop Entry]
Name=QSystem
GenericName=system watch
Type=Application
Exec=qsystem
Icon=qsystem.png
Comment=A system tool to view the system state.
StartupNotify=true
Terminal=false
OnlyShowIn=KDE;
#X-KDE-SubstituteUID=true
#X-KDE-Username=root
Categories=Qt;System;
Das Funktioniert wegen der Struktur. Ich sage wie alles heißt, den Rest weiß Linux.
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Danke für die antworten, jetzt hätte ich noch eine frage, und zwar:

Wenn ich eine lib erstelle, wird ja die lib und drei softlinks darauf erstellt.

Die lib soll unter /usr/libs/<verzeichnis> (oder einfach unter /usr/libs), aber was mach ich mit den softlinks? Wo müssen die hin?

Kenn jemand event. eine lektüre, tutorial, blog, etc. wo das genau beschrieben steht was wo hin muss, was wie gemacht werden muss, usw?

Danke!
Antworten