Portál AbcLinuxu, 13. května 2025 20:22

Dotaz: Makefile - ZThrads

28.3.2011 21:50 Drizz
Makefile - ZThrads
Přečteno: 233×
Odpovědět | Admin
Ahoj, lamu si hlavu, jak pridat knihovnu ZThread do Makefile, Makefilum moc nerozumim, delam je v QTDesigneru:

TARGET = program_zkouska

TEMPLATE = app

SOURCES += main.cpp\ mainwindow.cpp

HEADERS += mainwindow.h \ vlakno.h \ #/usr/include/zthread/ZThread.h #zvlast by me zajimalo proc nejede tohle

FORMS += mainwindow.ui

#g++ -I/usr/include/zthread #druhy pokus
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.3.2011 07:01 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Makefile - ZThrads
Odpovědět | | Sbalit | Link | Blokovat | Admin
Makefile s tým moc nemá. Ten je len vstupom pre make a určuje poradie vykonávania príkazov. Ako vyzerajú príkazy samotné je mu fuk. V tvojom prípade ide o príkazy na kompilovanie a linkovanie. Kompilovanie a linkovanie spravidla robí gcc alebo g++ (resp. to čo je obsahom premennej $CC a $LD). A gcc/g++ hľadá headre v adresároch uvedených za prepínačom -I, knižnice (.lib alebo .so) v adresári uvedenom za prepínačom -L a knižničný súbor libXY.lib hľadá, ak dostane prepínač -lXY. Býva zvykom vyskladať celý commandline z premenných $CC, $CFLAGS, $CPPFLAGS, $LDFLAGS (C Compiler, C Compiler flags, C Pre-Processor flags, Linker Flags)

Tiež záleží ako sú napísané zdrojáky. Ak máš v ňom:

#include "zthread/ZThread.h"

Tak cestu k headrom nemusíš zadávať, pretože /usr/include sa prehľadáva vždy a zthread/ZThread.h sa k tomu len prilepí, a vytvorí sa celá cesta.

Ak máš

#include "ZThread.h"

Nehľadaj v tom žiadnu vedu. Zamysli sa, či sa má ako vyskladať cesta k headrom/knižniciam a zariaď sa podľa toho.

Tak potrebuješ

g++ ... -I/usr/include/zthread

29.3.2011 07:05 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Makefile - ZThrads
Eh. Nejak mi škriatok prehodil riadky na konci ;-)
29.3.2011 17:47 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: Makefile - ZThrads
Odpovědět | | Sbalit | Link | Blokovat | Admin

Nejprve by bylo dobré napsat, že ti jde o qmake a ne o make, aby si nepletl ty, co se ti snaží pomoct (že pane rastos ;-))

No a pak je taky dobrý se podívat do dokumentace...

Každý má právo na můj názor!
29.3.2011 20:12 Drizz
Rozbalit Rozbalit vše Re: Makefile - ZThrads
Odpovědět | | Sbalit | Link | Blokovat | Admin
to ze je to soubor pro QT jsme is neuvedomil, ya to se omlouvam , ale stejne po procteni dokumentace mi to stejne nejde prelozit.

dodal jsem tam:

INCLUDEPATH = /usr/include/zthread #asi je jedno na kterej radek

ale porad to nejede, hlasi to chyby typu:

error: undefined reference to `ZThread::Thread::Thread(ZThread::Task const&, bool)'

ZThread jsou podle me jenom header soubory, takze by mel stacit jen INCLUDEPATH
29.3.2011 23:45 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: Makefile - ZThrads

"undefined reference" je chyba linkeru, ne kompilátoru. V "qmakefilu" ti chybí ještě přidání té knihovny pro linker pomocí LIBS = ... Je to v tý odkazovaný dokumentaci...

Mimochodem, máš nějakej speciální důvod, proč chceš použít ZThreads, když používáš Qt? U někoho, kdo nerozumí základům kompilace C++ projektů mě nenapadá žádnej rozumnej důvod proč nepoužít třídu QThread která je standartní součástí Qt (a je tudíž stejně dobře přenositelná jako ZThreads).

Každý má právo na můj názor!
30.3.2011 23:40 Drizz
Rozbalit Rozbalit vše Re: Makefile - ZThrads
Chyba nastala, že při prohledavani jsem nenašel knihovnu libZThreas.a, takze jsem se mylne domnival ze promenou LIBS nepotrebuju.

Proc si nekdo, kdo nerozumi zakladum kompilace C++ projektu nevybral QThread, je zcela prozaicka, je to prave proto, že se chce naucit kompilaci C++ projektu a trochu si osahat vlakna, nic jineho bych za tím asi nehledal ;-)

Jinak diky za radu, jsem zase o neco moudrejsi :)

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.