tipps gewuenscht: wie am besten qt project files lesen?



  • hallo,

    ich muss in einem programm einige informationen (wie den inhalt von HEADERS, SOURCES, FORMS, RSOURCES, ob einige CONFIG-flags wie warn_on/off, qt, ordered gesetzt sind und auch alle benutzerdefinierten variablen) aus qt project dateien auslesen.

    vorerst sind funktionen innerhalb der project files und verkapselte scopes nicht allzu wichtig (also vorerst sollen die infos nur aus dem "globalen" scope gelesen werden), aber natuerlich waere es allein des reizes wegen nicht schlecht, wenn auch dies miteinbezogen wuerde (sofern ich das denn hinbekommen sollte).

    nun wuesste ich gerne wie ich das am besten realisiere.
    mit qt mitteln (z.b. QRegExp), gewoehnlichen file streams (zeichen fuer zeichen/zeile fuer zeile einlesen und auswerten - ok, waer natuerlich auch mithilfe von qt) oder am besten ganz anders?

    was wuerdet ihr mir empfehlen?

    (fuer den letzten versuch 8zeile fuer zeile einlesen und zerstueckeln) gingen die sommerferien drauf und am ende kam doch nur mist raus 😞 ).

    // edit: ach ja, in dem programm (das u.a. die infos aus den project files auslesen muss) wird bis jetzt nur qt genutzt, es soll zumindest unter windows und linux, am besten auch unter mac os lauffaehig sein.

    mfg,
    julian



  • ich glaube nicht dass diese frage zu schwer zu beantworten ist, also wird sie zu dumm sein.

    koennte mir trotzdem jemand antworten, bitte, nur damit ich gewissheit habe, was am 1. post falsch ist?
    vielen dank.

    mfg,
    julian


  • Mod

    Verstehe ich dich richtig, das du QT Sourcecode auswerten willst, um dann entsprechende Elemente zu sichern?

    Dafür bräuchtest du einen Parser, und Parser für C++ sind nicht ganz trivial. Evtl. schaust du dir mal den Artikel zu boost::spirit im Magazin an,
    mit spirit kann man recht schnell einfache Parser entwickeln, auch für Sprachen.



  • ja genau, ich brauche einen parser fuer qt-code, allerdings keinen c++-sourcecode, sondern den code aus den project files (*.pro) (was ja doch nicht ganz so komplex wie c++-sourcecode ist).

    vielen dank fuer den tipp mit boost::spirit.
    ich hatte schon mal gelesen, dass das fuer meine zwecke ganz gut geeignet sei, aber auch, dass es fuer eher kleine projekte etwas overkill waere, boost zu nutzen.

    // edit: es waere auch schon etwas, wenn jemand einfach einen link haette, in dem ganz allgemein der bau von parsern erklaert wird, vorzugsweise in c++ (bzw. mit beispielen in c++).

    mfg,
    julian


  • Mod

    Diese Dateien sind aber wahrscheinlich je nach IDE verschieden.
    Evtl. sind es auch xml dateien, da brauchst du dann nur einen XML Parser wie TinyXML.



  • nein, diese dateien werden von qmake (qt-eigenes tool) verwendet, um daraus u.a. ein makefile zu erstellen.
    http://doc.trolltech.com/4.3/qmake-project-files.html

    // edit: also ist mindestens eine solche datei in jedem qt-projekt vorhanden und nicht ide-abhaengig.

    mfg,
    julian


  • Mod

    Hm, sieht garnicht so kompliziert aus. Sollte eigentlich kein Problem sein, das mit spirit auszulesen,
    oder einfach selber einen kleinen Lexer/ Parser zu schreiben.



  • phlox81 schrieb:

    Hm, sieht garnicht so kompliziert aus.

    das war der grund dass ich auf die idee gekommen bin, das selbst in einem programm zu parsen. 😃

    phlox81 schrieb:

    Sollte eigentlich kein Problem sein, das mit spirit auszulesen,
    oder einfach selber einen kleinen Lexer/ Parser zu schreiben.

    das ist schoen :), aber wie gesagt, mein letzter versuch war murks.

    also sollt ich (nie professionell programmieren gelernt, noch keine ahnung von design patterns etc., nie einen parser oder etwas vergleichbar komplexes geschrieben) besser boost::spirit nutzen oder es haendisch machen?
    zu zweiterem waere, falls es da etwas kostenloses gibt, etwas lesestoff wahrscheinlich nicht schlecht. nur etwas ganz allgemein zu systemen und strukturen die ich wahrscheinlich benoetigen wuerde waer schon super.

    ist ein hobbyprojekt, ich habe also alle zeit der welt mir noetiges wissen anzulesen. nur kein geld fuer lesestoff.

    mfg,
    julian


  • Mod

    Lies doch zum Anfang beide Artikel zu boost::spirit im C+ Magazin hier im Forum.

    Ansonsten müsstest du halt eine Datenstruktur entwerfen, die die notwendigen Informationen die du benötigst aufnimmst.


Anmelden zum Antworten