Portál AbcLinuxu, 7. května 2025 12:29

Dotaz: Glade makefile

4.7.2007 20:53 bizi | skóre: 8
Glade makefile
Přečteno: 1167×
Odpovědět | Admin
Zdravim,
mam problem s vlozenim vlastnich zdrojovych souboru do makefilu, ktery je automaticky vygenerovan Gladem (2.12).
Vite nekdo, jak na to?
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Fuky avatar 4.7.2007 23:26 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Glade makefile
Odpovědět | | Sbalit | Link | Blokovat | Admin

Bylo by dobré, kdyby jsi své problémy popsal ;-)

Máš nějaký rozumný důvod proč rovnou nepoužít libglade? Je to knihovna, která Ti zajistí načtení XML souboru s popisem rozhraní *.glade za běhu programu. Přijde mi to šikovné, pěkně se tím oddělí definice vzhledu od funkce.

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
5.7.2007 19:46 yman | skóre: 1
Rozbalit Rozbalit vše Re: Glade makefile
To nejsou zadny PROBLEMY jako ze neco nefunguje. Jenom nevim jak na to. Pokud tim pouzitim libglade myslis, ze z gladu vygenerujes ty zdrojaky rozdeleny v nekolika souborech (main,callbacks,interface,support), tak to samozrejme mam. Ale do zadnyho z nich nechci psat vlastni fce, pze uz z nazvu vyplyva, ze k tomu neslouzi. Zatim je pisu do callbacks pod fce generovany gladem, ale je jich vic a s odezvami (<-callbacks) nemaj nic spolecnyho, jenom ze jsou odtamtud volany. Proto je chci dat napr. do souboru funkce.c (s headrem funkce.h) a cely to pridat do projektu. Jenze do makefilu se to samo neprida a ja se v ty gladovsky prasecine nevyznam. Kdyz to tam pridam do seznamu zdrojaku, tak se nic nezmeni. Kvuli tomu nemuzu funkce.c (ani header) slinkovat s ostatnima souborama a tim padem ani nemuzu pouzivat fce, ktery v nem jsou. Proto bych potreboval vedet, jak to tam elegantne pridat, a at mi nikdo netvrdi ze to nejde - je to uplne zakladni vec nezbytna pro slusny programovani a kdyz je Glade nazyvanej modernim programovacim nastrojem, jak jsem nekde cet, tak to proste jit MUSI. Jenom zkratka nemuzu prijit na to jak.
icq je shit! (viz http://www.ddworld.cz/windows/icq-cesky-masochismus-v-im-instant-messagingu.html)
Fuky avatar 5.7.2007 22:23 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Glade makefile

Zkus si znovu přečíst můj první příspěvek a trochu se nad ním zamyslet. Generovat zdrojáky s popisem rozhraní je prasečina. Tudíž místo toho definici rozhrání vygeneruješ pouze do XML souboru *.glade a tento soubor pak použiješ pomocí knihovny libglade v libovolném programovacím jazyce např. C, C++, Python, Perl, Ada, Ruby, Java.

Libglade Reference Manual
Miniukázka v příkladu

11.7.2007 15:26 yman | skóre: 1
Rozbalit Rozbalit vše Re: Glade makefile
S tou prasecinou jak se to vezme. Predelal sem to na tenhle zpusob (vyuziti libglade a xml), napsal si makefile (dekuju uzivateli e.liska) a projekt prelozil. Ten zpusob se mi libi tim, ze kdyz uz vim jak na to, tak to je jednoduchy, mam malo souboru a pro vyvoj to je rychly. Obavam se ale, ze ten postup (tou rychlosti) se dost priblizuje interpretovanym jazykum jako Java, pze sice je rychlejsi vyvoj, ale ten program musi bejt zakonite pomalejsi (nemeril sem to, ale sem o tom presvedcenej), coz mi docela vadi, pze vytvarenej program chci pouzivat na malym a pomalym pocitaci, kde to bude znat. A co me hlavne zaskocilo, ze klasicky vytvorenej spustitelnej soubor (normalne pomoci gladovskyho makefilu) ma asi 40kB, zatimco ten pomoci libglade nakynul na neuveritelnejch 800kB! To me teda od pouzivani libglade odradilo. Mozna se to da ovlivnit parametrama prekladu, takze pokud nekdo vite jak to minimalizovat (a taky jak je to s tou rychlosti), tak prosim napiste. (Jinak ty parametry sem pouzil stejny jaky napsal e.liska do prikladovyho makefilu, jenom sem musel odstranit -ldlog -lpxb, prekladac mi to nesezral - asi chybi nejaky knihovny.) Diky
icq je shit! (viz http://www.ddworld.cz/windows/icq-cesky-masochismus-v-im-instant-messagingu.html)
Josef Kufner avatar 11.7.2007 16:10 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Glade makefile
Ty soubory připíšeš do src/Makefile.in a pak spustíš ./autogen.sh. To je celé.

Já používám ještě stále Glade 2, protože Glade 3 je jednak nechutně pomalej a jednak nevidím žádný přínos v odsouvání GUI do hromádky XML. Spíš naopak... Glade 2 hezy předpřipraví funkce a stačí to tam jen dopsat... Takže to ještě ušetří kopec psaní. Oddělit se GUI od logiky programu dá také velmi snadno. Do callbacks.c se napíšou věci okolo chování gui a zbytek někam bokem, což je tak jako tak potřeba udělat.
Hello world ! Segmentation fault (core dumped)
11.7.2007 18:24 yman | skóre: 1
Rozbalit Rozbalit vše Re: Glade makefile
Dekuju, konecne odpoved na mou otazku!
Asi vam budu pripadat otravnej, ale stejne s tim nejsem spokojenej. Funguje to dobre, je to presne to co sem puvodne chtel, a pokud se mi nepovede to, co chci ted, tak to tak budu pouzivat... Faktem ale je, ze jak tak o tyhle problematice premejslim, tak se mi ten gladovskej makefile uz vubec nelibi. Hafo (pro me) zbytecnejch souboru a vysledkem sice dobre fungujici, ale (pro me) absolutne nepruhlednej makefile. Nejradsi bych v gladu (at uz 2 nebo 3) vytvoril ten xml soubor a z nej pak vygeneroval jenom ten zdrojovej kod (uvital bych alternativni c-ckovej generator, pze gladovsky formatovani se mi fakt nelibi). Makefile bych si chtel psat vlastni, abych vedel, co to vlastne dela (a moh to tak snadno upravovat pro ten malej pocitac), ale at se snazim, jak se snazim, nemuzu ho napsat ani najit nejakou sablonu (moc tomu nerozumim, hodil by se mi na to nejakej tutorial), hlavne jaky to ma mit vlastne parametry! Co sem nasel `gtk-config --libs --cflags`, `pkg-config --libs gtk+-2.0`, `pkg-config --cflags gtk+-2.0`, tak to porad tak ruzne kombinuju atp. ale stejne to nejde. Prvni na cem to skonci bejva main.c:23: error: ‘PACKAGE_DATA_DIR’ undeclared (first use in this function), dalsi interface.h:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token nebo ze to nezna <gtk/gtk.h> (ted se mi to nepodarilo nasimulovat)...
Takze se omlouvam za to, ze nevim co chci, ale jak rikam - vystribrilo se mi to az takhle casem. Sem ale presvedcenej, ze tohle uz je definitivni verze mych predstav a tak prosim o tech nekolik poslednich rad tykajicich se tohodle prispevku. Diky moc
icq je shit! (viz http://www.ddworld.cz/windows/icq-cesky-masochismus-v-im-instant-messagingu.html)
e.lisak avatar 11.7.2007 18:55 e.lisak | skóre: 23
Rozbalit Rozbalit vše Re: Glade makefile
gladovsky formatovani se mi fakt nelibi

a co vam brani pouzit indent ? nebo si ty funkce psat kompletne sam...

tutorial

konkretne k cemu? make, gcc, psani kodu v C?

11.7.2007 19:08 yman | skóre: 1
Rozbalit Rozbalit vše Re: Glade makefile
pouzit indent mi brani to, ze nevim co to je:) (mozna spis :( ) takze co ze to prosim je?
tutorial k makefile, cet sem sice neco na Linuxsoftu, ale stejne zkratka nevim, co tam mam vlastne napsat - jak rikam, nejvetsi problem sou ty parametry...
u ty vami preferovany verze s xml sem opravil ty parametry pro debug a uz to ma jenom asi 30kB takze super, diky... no budu muset vyzkouset jak to bude s tou rychlosti, obavam se totiz, ze celkove to nebude zas tak malo (nacteni, zobrazeni, prirazeni signalu, pozdejsi operace s objekty - tady jde o to, jestli se porad program prochroupava tim souborem, nebo ho jenom nacte a jednou dynamicky prelozi a pak uz jede z nacteny prelozeny verze...)
uvidim jak to s tim bude, jak rikam, rychlost pro me bude na tom malym pocitaci dost dulezita...
stejne bych rad vedel aspon jak napsat spravne ten makefile pro klasickou (ne xml) verzi
dekuju
icq je shit! (viz http://www.ddworld.cz/windows/icq-cesky-masochismus-v-im-instant-messagingu.html)
e.lisak avatar 11.7.2007 20:00 e.lisak | skóre: 23
Rozbalit Rozbalit vše Re: Glade makefile
mozna lepsi poradit online...

kdyztak (muj nick)@jabber.cz

11.7.2007 20:07 yman | skóre: 1
Rozbalit Rozbalit vše Re: Glade makefile
aha, tak ten zrovna nemam :-(
nebylo by icq nebo skype?
icq je shit! (viz http://www.ddworld.cz/windows/icq-cesky-masochismus-v-im-instant-messagingu.html)
e.lisak avatar 11.7.2007 20:16 e.lisak | skóre: 23
Rozbalit Rozbalit vše Re: Glade makefile
skype se mi rozjizdet nechce, ale SIP pustit muzu :-)
Josef Kufner avatar 11.7.2007 21:41 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Glade makefile
Ad makefile: zkus použít můj... měl by fungovat pro většinu programů jen s minimálníma změnama (konfigurace knihoven) a závislosti mezi soubory to sestavuje samo.
Hello world ! Segmentation fault (core dumped)
e.lisak avatar 11.7.2007 18:48 e.lisak | skóre: 23
Rozbalit Rozbalit vše Re: Glade makefile
velikost vysledneho souboru 40kB a 800kB
to zavisi na prepinacich prekladace (-g3 -ggdb -Wall -DDEBUG=1), ktere nastavuji pridani ladicich informaci. z binarky je muzete odstranit treba stripem
zadne optimalizace zapnuty nejsou (doporuceno RTFM od gcc ;-) )

knihovny dlog a pxb jsou moje vlastni, docela bych se divil, kdybyte mel v systemu neco se stejnym nazvem ;-)

jinak jeste k te rychlosti - jedine zpomaleni je v nacitani XML souboru, jinak je to stejne rychle, jako kompilovane GUI (pro coz je pomerne vystizne jiz pouzite slovo prasarna, zvlaste u vetsich projektu)

4.7.2007 23:34 qk
Rozbalit Rozbalit vše Re: Glade makefile
Odpovědět | | Sbalit | Link | Blokovat | Admin
No ja na vyvoj s pomoci gladu pouzivam anjutu a tam staci si pridat soubor do projektu.
e.lisak avatar 6.7.2007 09:56 e.lisak | skóre: 23
Rozbalit Rozbalit vše Re: Glade makefile
Odpovědět | | Sbalit | Link | Blokovat | Admin
v glade mate 2 moznosti - nechat si vygenerovat kod vytvatvarejici GUI, coz obcas pomuze, ale pri kazde zmene GUI musite kompilovat

nebo popis GUI ulozit do souboru *.glade a GTK cast poustet zpusobem (ukazkovy priklad z helpu, sam ho pouzivam)

 rc =  gtk_init_check(&argc, &argv);
/* load the interface */
 xml = glade_xml_new("popis_gui.glade", NULL, NULL);
/* connect the signals in the interface */
 glade_xml_signal_autoconnect(xml);
/* start the event loop */
 gtk_main();

s tim, ze si pak muzete napsat (pro vyvoj) svuj vlastni Makefile, ktery muze vypadat treba podobne:

LIBS=-lm -lz -ldlog -lpxb `pkg-config libglade-2.0  --libs`
INCLUDE=`pkg-config --cflags-only-I libglade-2.0` 

DEBUG=-g3 -ggdb -Wall -DDEBUG=1
FLAGS=-funsigned-char -D_GNU_SOURCE 

CFLAGS=$(DEBUG) $(INCLUDE) $(FLAGS)

CC=gcc $(DEBUG)

DEPS=sig_proc.o ui_callback.o ui_events.o ui_test.o pxb-gtk.o zoom.o mouse_events.o

program: prg_main.o $(DEPS)
        $(CC) $(LIBS) $(DEPS) prg_main.o -o $@ -export-dynamic
mozna rychlejsi, nez lustit, kam presne pridavat sve soubory

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.