Καλημέρα.
Προσπαθώ να γράψω ένα απλό πρόγραμμα στο geany χρησιμοποιώντας QT βιβλιοθήκες. Επειδή έρχομαι απο περιβάλλον windows και πργραμματισμό σε Java κάποια πράγματα μου φαίνονται λίγο σύνθετα.
Προσπαθώ να γράψω το εξής απλό:
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("hello world!");
label->show();
return app.exec();
}
Όταν πάω να κάνω μεταγλώτιση μου βγάζει τα εξής λάθη:
g++ -Wall -c "hello.cpp" (στο φάκελο: /home/xpan/workspace/QTprojects/hello)
hello.cpp:1:24: error: QApplication: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος
κλπ, κλπ...
Υποθέτω πως υπάρχει πρόβλημα με τις βιβλιοθήκες και τη δήλωσή τους σε κάποια path enviromental variables. Έχω δίκιο; Τι πρέπει να κάνω;
- Συνδεθείτε ή εγγραφείτε για να σχολιάσετε
Σχόλια
Ξέχασα να αναφέρω ότι προσπάθησε και με KDevelop (σε gnome περιβάλλον) άλλα ούτε εκεί κατάφερα να κάνω κάτι. Η σκέψη ότι μάλλον φταίνε τα Path variables προέρχεται και απο τη συμπεριφορά του KDevelop.
Να σε ρωτήσω; Εχεις εγκαταστήσει τα πακέτα ανάπτυξης (development packages) του Qt; Μάλλον αυτό φταίει
Π.χ. στο Fedora 9 έχω εγκαταστήσει τα εξής:
qt-devel
qt
qt-x11
Σε Debian-based διανομές θες αυτά:
libqt4-dev, libqt4-qt3support, qt4-dev-tools, qt4-designer, qt4-doc
Ενώ σε Mandriva αυτά:
libqt4-devel, libqt3support4, qt4-common, qt4-examples, qt4-designer, qt4-assistant
Εγκατέστησε τα ανάλογα.
Δεν φτάνει όμως αυτό. Πρέπει να έχεις φτιάξει το κατάλληλο src.pro αρχείο. Αυτό το φτιάχνεις με το qmake-qt4 (προσοχή, είναι άλλο το qmake και άλλο το qmake-qt4, βρισκόμαστε σε μετάβαση από την 3 στην 4 και γίνεται λίγο χαμός...), το οποίο τρέχεις στο φάκελο με τα αρχεία του κώδικά σου. Τα περιεχόμενα του είναι κάπως έτσι (αν θες να το φτιαξεις χειράτα:
HEADERS = convertor.h
FORMS = convertorform.ui
SOURCES = main.cpp\
convertor.cpp
Τις περισσότερες φορές, το qmake-qt4 σου λύνει τα χέρια. Μόλις το τρέξεις με την παράμετρο -project, θα φτιάξει το .pro. Μετά το ξανατρέχεις σκέτο, και μετά make.
--Stat rosa pristina nomine, nomina nuda tenemus
BTW, το KDevelop σου λύνει τα χέρια μια και δεν χρειάζεται να κάτσεις να ασχοληθείς με .pro αρχεία και qmake-qt4.
--Stat rosa pristina nomine, nomina nuda tenemus
Ευχαριστώ μάλλον είναι εγκατεστημένα:
[xpan@Fedora-Desktop ~]$ sudo yum install qt-devel qt qt-x11
Password:
livna 100% |=========================| 2.1 kB 00:00
fedora 100% |=========================| 2.1 kB 00:00
adobe-linux-i386 100% |=========================| 951 B 00:00
updates 100% |=========================| 2.3 kB 00:00
Setting up Install Process
Parsing package install arguments
Package qt-devel - 1:3.3.8b-2.fc8.i386 is already installed.
Package qt - 1:3.3.8b-2.fc8.i386 is already installed.
No package qt-x11 available.
Nothing to do
Επίσης το KDevelop μου γράφει οτι
Before starting the build you may need to setup the KDE4 environment variables.
To do this open Project->Project Options and then look at the "Run" and the "Make"
pages. Each of these two has an environment variables widget in which you have
to fill in the right values for the variables already listed.
After setting up the variables you'll also need to run cmake inside the build
directory. This can not be done by kdevelop as a KDE4 environment is needed
when running cmake to find KDE4. Open the integrated konsole and change to the build
subdirectory. Then setup a KDE4 environment and run "cmake ../"
Έκανα αυτό που λέει με το cmake και μου έγραψε αυτό:
[xpan@Fedora-Desktop build]$ cmake ../
CMake Error: ERROR: Could not find KDE4 kde4-config
-- Configuring done
[xpan@Fedora-Desktop build]$
Ενώ τα PATHs που λέει δεν μπορώ να βρω κάτι παραμόνο εδώ:
http://techbase.kde.org/Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc
άλλα δεν είμαι σίγουρος οτι είναι οι σωστές τιμές για το fedora 8
Δεν υπάρχει κάποιο step-by-step tutorial για να ξεκινήσει κάποιος απο την αρχή;
...να προσθέσω οτι στο KDevelop, όταν πάω να κάνω μεταγλώττιση μου βγάζει αυτό:
cd '/home/xpan/workspace/hello2/build' && KDEDIRS="/etc/kde:/user/include/kde" KDEHOME="/home/xpan/.kde" LD_LIBRARY_PATH="/usr/lib/qt4:/usr/share/qt4" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games" PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig" LC_MESSAGES="C" LC_CTYPE="C" make -k -j1
make: *** No targets specified and no makefile found. Stop.
*** Έξοδος με κατάσταση: 2 ***
Είσαι στην περίπτωση του src.pro/Makefile. Στο λέει καθαρά: "No targets specified and no makefile found."
Πήγαινε στο κατάλογο με τα sources και είτε φτιάξε ένα onoma.pro αρχείο που περιέγραψα πάνω και τρέξε qmake-qt4
ή
τρέξε
qmake-qt4 -project
qmake-qt4
και μετά make.
--Stat rosa pristina nomine, nomina nuda tenemus
Ευχαριστώ. Νομίζω πως πάλι κάτι δεν κάνω καλά:
Τελικά δοκίμασα απο την αρχή:
Άνοιξα το geany, έγραψα αυτό το απλό αρχείο το αποθήκευσα ως
hello.cpp
έτραξα με τη σειρά απο το terminal
και δούλεψε κανονικά.
Μια
τελευταία ερώτηση. Δεν κατάλαβα γιατί πρέπει να δημιουργώ .pro αρχείο;
Προσπάθησα να ξεκινήσει κατευθείαν απο το qmake-qt4 άλλα δεν πέτυχε.
Πολύ ωραία. Χαίρομαι που το έλυσες.
Πολύ απλά, το .pro αρχείο περιέχει μια περιγραφή του project σου. Π.χ. τι sources έχεις, τι headers, τι .qrc (αρχεία εικονιδίων, κοκ), τι φόρμες στο Designer κλπ κλπ. Σε απλές περιπτώσεις (όπως σου έτυχε) η εντολή qmake-qt4 -project φτιάχνει μόνη της και επιτυχώς το .pro αρχείο. Σε πιο περίπλοκες δουλειές (όταν έχεις πολλά αρχεία και στοιχεία) όμως θέλει (και) χεράκι.
Στη συνέχεια, από το .pro αρχείο, ξανατρέχοντας το qmake-qt4 παράγεται το Makefile. Το τελευταίο, θα ξέρεις, είναι το κρίσιμο αρχείο με τις οδηγίες για compile flags, install options, κλπ κλπ, του Linux. Κάθε project έχει ένα τέτοιο. Αυτό το Makefile είναι οι οδηγίες που ψάχνει να βρει η εντολή make για το "χτίσιμο" του εκάστοτε προγράμματος. Το κακό είναι ότι η δημιουργία του Makefile θεωρείται δύσκολη...
Αρα η απάντηση στο ερώτημά σου είναι: "γιατί γλυτώνεις την ανάγκη να διαβάσεις πως φτιάχνονται τα Makefile(s)..."
:)
--Stat rosa pristina nomine, nomina nuda tenemus