Dateien einkompilieren

12/09/2008 - 10:14 von Markus Wichmann | Report spam
Hi all,

ich wollte mal fragen, was es so an Standard-Methoden gibt, binàre
oder auch Textdateien in ein Programm einzukompilieren. Konkret geht
es hier um glade, weil glade jetzt keinen Codegenerator mehr enthàlt,
sondern man über libglade operieren soll. Das bràuchte ja theoretisch
eine externe Datei, von der ich aber nicht weiß, wo sie relativ zu
meinem Programm liegt, was also suboptimal ist. Momentan löse ich das
Problem so, dass zunàchst das Interface mit glade erstellt wird, und
dann:

OLDSIZE=$(wc -c <*.glade) #die Menge aller *.glade hat 1 Element!
bzip2 -k *.glade
NEWSIZE=$(wc -c <*.bz2)
(echo 'unsigned char gxmlbz[] = {'
<*.bz2 od -An -tx1 -v -w 10 | while read line; do
for i in $line; do
echo -n "0x$i, "
done
echo
done
echo -e '};'
echo "unsigned int unzipsize = $OLDSIZE + 5;" #Zur Sicherheit...
echo "unsigned int zipsize = sizeof gxmlbz;") > gxmlbz.c

Anschließend habe ich eine Quelltextdatei mehr, die alles wichtige
exportiert. Die main() bleibt immer gleich: Puffer entpacken, durch
libglade jagen, die nötigen Widget-Handles exportieren lassen, Puffer
auflösen. Die wichtigen Widgets àndern sich natürlich immer, aber das
kann man ja in eine andere übersetzungseinheit auslagern. Die muss
sich dann freilich von Projekt zu Projekt àndern.

Meine Fragen nun:
1. Was haltet ihr von der Idee? Vor-/Nachteile, die offensichtlich
wàren?
2. Ist das da oben ... portabel genug? D.h. làuft es überall, wo auch
die benötigten Bibliotheken (libglade, gtk, libbz2) laufen?
3. Gibt es andere Methoden? Wenn ja, welche? Vor-/Nachteile?

Tschö,
Markus
Nur weil ein Genie nix reißt, muß ja nun nicht gleich jeder Idiot
pausieren... Bully hats ja auch geschafft.
 

Lesen sie die antworten

#1 Jan Kandziora
12/09/2008 - 11:15 | Warnen spam
Markus Wichmann schrieb:

ich wollte mal fragen, was es so an Standard-Methoden gibt, binàre
oder auch Textdateien in ein Programm einzukompilieren.



Muss das sein? Was spricht dagegen, einfach mmap() auf die Datei anzuwenden?
So kann man sie auch ohne neu zu kompilieren austauschen.

Mit freundlichem Gruß

Jan

Ähnliche fragen