Portál AbcLinuxu, 9. srpna 2025 05:50


Dotaz: Problem s kompilaci Hello World s QT4.3/C++/Edyuk

6.5.2008 08:02 klapet | skóre: 3
Problem s kompilaci Hello World s QT4.3/C++/Edyuk
Přečteno: 499×
Odpovědět | Admin
Dobry den, pouzivam Fedoru 8 a rad bych se naucil programovat v kombinaci C++ a QT4. Nainstaloval jsem si tedy baliky jako qt4-devel (verze 4.3.4) a k tomu IDE Edyuk (1.0.0rc-2). Po otevreni Edyuku jsem vybral novou gui aplikaci a vygenerovalo mi to tento kod:
#include < QLabel>
#include < QApplication>

int main(int argc, char **argv)
{
   QApplication app(argc, argv);
   QLabel l("Hello Qt community!");
   l.show();

   return app.exec();
}
Pri pokusu o kompilaci to vsak vypise tuto chybu:
      -- Task started --

      >> Step 0 : Generate <<
      /home/user/Desktop/edyuk-1.0.0-rc2/hello_world $ qmake "/home/user/Desktop/edyuk-1.0.0-rc2/hello_world/hello_world.pro"

      >> Step 1 : Compile <<
      /home/user/Desktop/edyuk-1.0.0-rc2/hello_world $ make ""

      g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2
 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386
 -mtune=generic -fasynchronous-unwind-tables  -DQT_NO_DEBUG -DQT_SHARED 
 -DQT_TABLET_SUPPORT -DQT_THREAD_SUPPORT -I/usr/lib/qt-3.3/mkspecs/default
 -I. -I. -I/usr/lib/qt-3.3/include -o main.o main.cpp

      main.cpp:13:18: error: QLabel: není souborem ani adresářem
      main.cpp:14:24: error: QApplication: není souborem ani adresářem
      main.cpp: In function 'int main(int, char**)':
      main.cpp:18: error: 'QApplication' was not declared in this scope
      main.cpp:18: error: expected `;' before 'app'
      main.cpp:20: error: 'QLabel' was not declared in this scope
      main.cpp:20: error: expected `;' before 'l'
      main.cpp:21: error: 'l' was not declared in this scope
      main.cpp:23: error: 'app' was not declared in this scope
      main.cpp: At global scope:
      main.cpp:16: warning: unused parameter 'argc'
      main.cpp:16: warning: unused parameter 'argv'
      make: *** [main.o] Error 1

      -- Task ended due to error(s) -- 
Predpokladam, ze to je zapricineno chybejicimi knihovnami QLabel a QApplication. Nainstalovane je mam urcite, v /usr/include/Qt, ale newim jak rict tomu IDE (ci kompilatoru?) ze je mam prave tam :)

Muzete mi prosim poradit, co s tim?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.5.2008 08:30 V3lbl^^d | skóre: 5 | Praha
Rozbalit Rozbalit vše Re: Problem s kompilaci Hello World s QT4.3/C++/Edyuk
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevim jak je to v Edyuku, ale obecne vsechny problemy linkovani knihoven QT se vazi k souboru *.pro. Zkus si pročíst http://doc.trolltech.com/4.0/qmake-project-files.html a překontrolovat, zda-li máš uvedeny moduly jak mají být.

Jako rychlý test, bych se vykašlal na to, co edyuk vygeneroval a zkompiloval to s příkazy: qmake -project && qmake && make které onen soubor i automaticky vygenerují.
6.5.2008 08:50 jimi
Rozbalit Rozbalit vše Re: Problem s kompilaci Hello World s QT4.3/C++/Edyuk
namiesto qmake treba dat qmake-qt4. qmake berie zrejme ako qt3
6.5.2008 21:46 klapet | skóre: 3
Rozbalit Rozbalit vše Re: Problem s kompilaci Hello World s QT4.3/C++/Edyuk
No jo, je to tak :) S qmake-qt4 -project && qmake-qt4 && make se to zkompilovalo bez problemu. Mozna, ze Edyuk pouziva pro generovani makefile ten qmake, tak to zkusim prelinkovat na qmake-qt4, i kdyz to asi necham az jako krajni reseni ;)

Btw, muzete doporucit nejake jine povedene IDE pro vyvoj QT4/C++ ?
6.5.2008 21:49 klapet | skóre: 3
Rozbalit Rozbalit vše Re: Problem s kompilaci Hello World s QT4.3/C++/Edyuk
Pod pojmem "povedene" bych si predstavoval neco s integrovanym QT designerem, obarvenym kodem, pokud mozno i autodoplnovani a pak at to ma tlacitko "Compile & Run" a kdyz to zmacknu, tak na me vybafne ta moje aplikace :D
kozzi avatar 6.5.2008 22:24 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: Problem s kompilaci Hello World s QT4.3/C++/Edyuk
tak pokud mas silnej komp s hodne RAM, tak si nainstaluj Eclipse a doinstaluj do toho podporu pro C++ a QT4 potom ti to pujde vse jak chces, ja to zkousel a funguje to velmi dobre, ale mam mamlo RAM, takze jsem nakonec presel na QDevelop ale ten nema integrovany toho designera, ackoliv castecne ho ma staci poklikat na nazev toho neco.ui souboru a otvre se designer, takze to moc nevadi a zbytek pozadavku taky splnuje.
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
7.5.2008 15:16 T.O.M. | skóre: 22 | blog: T.O.M.'s blog | Ostrava
Rozbalit Rozbalit vše Re: Problem s kompilaci Hello World s QT4.3/C++/Edyuk

S QDevelop jsem byl celkem spokojeny, ale vypada to, ze projekt umrel, protoze uz nekolik mesicu nebyla v SVN stromu zadna zmena. Zkousel jsem prejit na Edyuk, ale ten mi nesedel stejne jako Monkey Studio.

Nakonec jsem skoncil u KDevelopu. Pri otevirani nekterych Qt4 projektu sice protestuje, ze nerozumi zapisu jako $$PROMENNA atd., ale pak stejne vse funguje.

Za velke plus beru vzdy funkcni navigaci v projektu pres CTAGS, skladani kodu, bezproblemove debugovani a nebo detekce memory leaku pomoci Valgrindu...

Jedna vlastnost se mi ale nelibi a sice, ze doplnovani kodu mi nabizi jen vsechna slova napsana v danem souboru a ne promenne a metody dostupne v danem miste kodu :-(
Mozna je to jen spatnym nastavenim...

7.5.2008 15:35 klapet | skóre: 3
Rozbalit Rozbalit vše Re: Problem s kompilaci Hello World s QT4.3/C++/Edyuk
Nene, myslim, ze to neni nastavenim. Pouzivam KWrite pro upravu HTML souboru a tam je ta funkce taky (je to nejaky plugin), je to jenom doplnovani jiz drive pouzitych slov a myslim, ze KDevelop je na stejnem zakladu jako KWrite.

Nicmene ten Edyuk opravdu pouziva qmake pro generovani tech souboru a dokonce ma i nastaveni, kterym se da zmenit cesta/prikaz ke qmake, takze uz to jede jak ma. Ale asi stejne zkusim ten Eclipse, uvidim jak to bude behat.

Diky za pomoc ;)

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.