...
Qt-ohjelman
...
”julkaisu”
...
(deploying)
...
käyttäen
...
dynaamisesti
...
linkitettyjä
...
kirjastoja
...
Qt:lla
...
tehtyä
...
ohjelmaa
...
on
...
usein
...
tarve
...
käyttää
...
myös
...
tietokoneessa,
...
johon
...
Qt:ta
...
tai
...
sen
...
kirjastoja
...
ei
...
ole
...
asennettu.
...
Ohjelman
...
voi
...
tällöin
...
kopioida
...
muistitikulle
...
tai
...
vaikka
...
lähettää
...
sähköpostilla
...
zipattuna,
...
ja
...
sitä
...
voi
...
käyttää
...
missä
...
tahansa
...
saman
...
käyttöjärjestelmän
...
,
...
jolla
...
ohjelma
...
on
...
käännetty,
...
sisältämässä
...
koneessa.
...
Qt
...
tekee
...
julkaistavalle
...
ohjelmalle
...
oman
...
kansionsa,
...
johon
...
pitää
...
vielä
...
lisätä
...
dynaamisesti
...
linkitetyt
...
kirjastot
...
.
...
Nämä
...
ovat
...
tiedostoja,
...
joilla
...
on
...
Windowsissa
...
pääte
...
.dll
...
ja
...
Linuxeissa
...
yleensä
...
.so.
...
Tiedostot
...
löytyvät
...
jostain
...
päin
...
Qt:n
...
asennushakemistoa,
...
esim.
...
/QtSdk/Desktop/Qt/4.8.0/gcc/lib.
...
Jos
...
projektissa
...
käytetään
...
Qt:n
...
ulkoisia
...
kirjastoja,
...
esim.
...
Qwt:ta,
...
myös
...
niiden
...
kirjastotiedostot
...
on
...
lisättävä.
...
Mikäli
...
Qt
...
ei
...
tee
...
”debug”
...
tai
...
”release”
...
-kansiota,
...
on
...
vasemmalla
...
olevan
...
valikon
...
”Project”-välilehdeltä
...
asetettava
...
Shadow
...
build
...
-kohtaan
...
raksi.
...
Tällöin
...
kansio
...
tulee
...
”Build
...
directory”:ssa
...
määriteltyyn
...
polkuun.
...
”Build/run
...
target
...
selector”:sta,
...
joka
...
löytyy
...
Qt:ssa
...
vasemmalta
...
alhaalta,
...
kannattaa
...
myös
...
säätää
...
kohteeksi
...
”release”.
...
Tällöin
...
tarvittavat
...
liitekirjastot
...
ovat
...
huomattavasti
...
pienempiä
...
kooltaan.
...
Debug-version
...
kirjastot
...
tunnistaa
...
siitä,
...
että
...
niiden
...
tiedostonimen
...
perässä
...
on
...
d-kirjain,
...
esimerkiksi
...
QtCored.dll,
...
kun
...
release-version
...
vastaava
...
tiedosto
...
on
...
QtCore.dll.
...
Windowsissa
Windowsissa julkaisu on melko yksinkertaista, koska ohjelma (.exe)
...
löytää
...
.dll-tiedostot
...
samasta
...
kansiosta.
...
Lisäksi
...
ohjelma
...
sanoo,
...
jos
...
jokin
...
.dll-tiedosto
...
puuttuu.
...
Lisää
...
siis
...
julkaisun
...
kansioon,
...
eli
...
samaan
...
kansioon,
...
jossa
...
on
...
.exe-tiedosto,
...
kaikki
...
tarvittavat
...
.dll-tiedostot.
...
Näitä
...
ovat
...
käyttöliittymällä
...
varustetussa
...
ohjelmassa
...
aina
...
ainakin
...
QtCore.dll
...
ja
...
QtGui.dll.
...
Usein
...
tarvitaan
...
myös
...
muita
...
kirjastotiedostoja.
...
Myös
...
esimerkiksi
...
kuvat
...
tai
...
muut
...
ohjelman
...
käyttämät
...
resurssitiedostot
...
on
...
luonnollisesti
...
lisättävä.
...
Huom.
...
liitä
...
aina
...
oikeat
...
versiot
...
.dll-tiedostoista.
...
Jos
...
teet
...
ohjelman
...
Qt
...
4.8:lla,
...
älä
...
ota
...
tiedostoja
...
vanhemmasta
...
Qt-versiosta.
...
Windowsissa
...
tiedostojen
...
nimi
...
on
...
yleensä
...
sama
...
versiosta
...
riippumatta,
...
joten
...
niistä
...
on
...
helppo
...
erehtyä.
...
Linuxissa
Linuxissa dynaamisesti linkitetyt kirjastot ovat .so-päätteisiä,
...
jonka
...
lisäksi
...
niiden
...
perässä
...
on
...
usein
...
versionumero.
...
Aina
...
tarvittavat
...
tiedostot
...
Qt
...
4.8.0:ssa
...
ovat
...
siis
...
libQtCore.so.4.8.0
...
ja
...
libQtGui.so.4.8.0.
...
Linuxiin
...
pätevät
...
muuten
...
samat
...
säännöt
...
kuin
...
Windowsiin,
...
mutta
...
ohjelma
...
yleensä
...
etsii
...
kirjastoja
...
jostain
...
päin
...
koneen
...
tiedostojärjestelmää,
...
tyypillisesti
...
/usr/lib
...
-hakemistosta.
...
Ohjelmalle
...
on
...
siis
...
kerrottava
...
missä
...
tiedostot
...
ovat.
...
Yksinkertaisinta
...
on
...
ehkä
...
tehdä
...
skriptitiedosto
...
tekstinkäsittelyohjelmalla,
...
vaikkapa
...
Gedit:llä.
...
Tee
...
siis
...
ohjelman
...
kansioon
...
tekstitiedosto,
...
ja
...
nimeä
...
se
...
samalla
...
nimellä
...
kuin
...
ohjelmasi,
...
päätteeksi
...
”.sh”.
...
Esim.
...
jos
...
ohjelmasi
...
on
...
nimeltään
...
”Peli”,
...
tekstitiedoston
...
nimen
...
on
...
oltava
...
”Peli.sh”.
...
Kopioi
...
tiedostoon
...
seuraava
...
sisältö:
Code Block |
---|
\\ {code} #!/bin/sh appname=`basename $0 | sed s,\.sh$,,` dirname=`dirname $0` tmp="${dirname#?}" if [ "${dirname%$tmp}" != "/" ]; then dirname=$PWD/$dirname fi LD_LIBRARY_PATH=$dirname export LD_LIBRARY_PATH $dirname/$appname "$@" {code} \\ Tämän jälkeen ohjelman voi suorittaa ajamalla skriptitiedosto Terminalista: |
Tämän jälkeen ohjelman voi suorittaa ajamalla skriptitiedosto Terminalista: ”./Peli.sh”.
...
Ensin
...
on
...
luonnollisesti
...
mentävä
...
ohjelman
...
hakemistoon.
...
Voi
...
olla,
...
että
...
ohjelmalle
...
ja
...
skriptille
...
pitää
...
vielä
...
antaa
...
oikeuksia:
...
sudo
...
chmod
...
777
...
Peli
...
sudo
...
chmod
...
777
...
Peli.sh
...
Jos
...
ohjelma
...
hakee
...
kirjastotiedostoa
...
lyhyemmällä
...
versionumerolla,
...
esim.
...
libQtCore.so.4,
...
tee
...
seuraavasti.
...
Paina
...
kirjastotiedostoa,
...
esim.
...
libQtCore.so.4.8.0
...
oikealla
...
näppäimellä,
...
valitse
...
”tee
...
linkki”
...
(create
...
link),
...
nimeä
...
tehty
...
linkki
...
ohjelman
...
haluamalla
...
nimellä,
...
tässä
...
tapauksessa
...
siis
...
”libQtCore.so.4”.
...
Saat
...
ohjelmasta
...
pikakuvakkeen
...
tekemällä
...
luomastasi
...
skriptitiedostosta
...
(.sh)
...
linkin
...
em.
...
tavalla
...
ja
...
valitsemalla
...
”Run
...
in
...
terminal”,
...
kun
...
haluat
...
suorittaa
...
ohjelman.
...
Lähde:
...
developer.qt.nokia.com/doc/qt-4.8/deployment.html