Zum Inhalt springen

qmake

aus Wikipedia, der freien Enzyklopädie

qmake (ein Nachfolger von tmake<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20080513113324

      | {{#ifeq: 20080513113324 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: Make alternatives | {{#invoke:WLink|getEscapedTitle|Make alternatives}} | {{#invoke:Webarchiv|getdomain|http://freshmeat.net/articles/view/1715/}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20080513113324}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: Make alternatives | {{#invoke:WLink|getEscapedTitle|Make alternatives}} | {{#invoke:Webarchiv|getdomain|http://freshmeat.net/articles/view/1715/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2019-05-08 16:47:34 InternetArchiveBot | 2019-05-08 16:47:34 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20080513113324}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: Make alternatives | {{#invoke:WLink|getEscapedTitle|Make alternatives}} | {{#invoke:Webarchiv|getdomain|http://freshmeat.net/articles/view/1715/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2019-05-08 16:47:34 InternetArchiveBot | 2019-05-08 16:47:34 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: Make alternatives | {{#invoke:WLink|getEscapedTitle|Make alternatives}} | {{#invoke:Webarchiv|getdomain|http://freshmeat.net/articles/view/1715/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2019-05-08 16:47:34 InternetArchiveBot | 2019-05-08 16:47:34 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: Make alternatives | {{#invoke:WLink|getEscapedTitle|Make alternatives}} | {{#invoke:Webarchiv|getdomain|http://freshmeat.net/articles/view/1715/}} }} (Memento{{#if: {{#if: 2019-05-08 16:47:34 InternetArchiveBot | 2019-05-08 16:47:34 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: Make alternatives | {{#invoke:WLink|getEscapedTitle|Make alternatives}} | {{#invoke:Webarchiv|getdomain|http://freshmeat.net/articles/view/1715/}} }}  
                 }}}}}}}}{{#if:2019-05-08 16:47:34 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20080513113324|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://freshmeat.net/articles/view/1715/}}
    || {{#if:  || }}
  }}{{#if: Make alternatives
    | {{#if: {{#invoke:WLink|isBracketedLink|Make alternatives}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://freshmeat.net/articles/view/1715/%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://freshmeat.net/articles/view/1715/%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://freshmeat.net/articles/view/1715/ }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }} Qmake had a predecessor, tmake, implemented in Perl</ref>) ist ein Generator für Makefiles. Es ist Teil der Qt-Bibliothek der Firma Qt Development Frameworks. qmake erstellt ausgehend von einer Konfigurationsbeschreibung ein Makefile, mit dessen Hilfe man in der Lage ist, eine Sammlung von Quelltexten zu einem Programm oder einer Bibliothek zu übersetzen. Obwohl es speziell für die Arbeit mit Qt entwickelt worden ist, ist auch eine Verwendung für von Qt unabhängiger Software möglich.

Verwendung

Da Makefiles je nach Compiler und Plattform unterschiedlich aussehen, ist eine plattformübergreifende Entwicklung kaum möglich. Hier greift das Konzept von qmake. Es benötigt eine sehr einfach aufgebaute Projekt-Datei, die die Dateiendung .pro besitzt. Auf allen von qmake unterstützten Plattformen ist nun eine Erzeugung eines Makefiles möglich, das auf dem jeweiligen System verwendet werden kann, wobei es auch mit Qt-spezifischen Erweiterungen umgehen kann.

Arbeitsweise

Eine Projekt-Datei für qmake umfasst zunächst eine Beschreibung, ob es sich bei dem aktuellen Projekt um ein Programm oder um eine Bibliothek handelt. Des Weiteren können unterschiedliche Konfigurationen angegeben werden. Dadurch ist qmake in der Lage, ein Makefile zu erzeugen, das die benötigten Bibliotheken korrekt einbindet. Ebenso ist der Programmierer in der Lage, Debug- oder Release-Versionen seines Programms zu erzeugen.

Schließlich muss der Programmierer noch alle Quelltext-Dateien angeben, die zu seinem Programm gehören. Dabei ist eine Kategorisierung der Dateien nötig. Diese erfolgt, wie in C++ üblich, in Header- und Quelltext-Dateien. Zusätzlich ist auch die Angabe von Ressource-Dateien möglich, die Bilder, Dialogdefinitionen oder andere Daten enthalten, die zum Programm gehören. Neben dem Buildprozess kann in einer .pro-Datei auch noch die Installation beschrieben werden.

Im Ergebnis findet der Programmierer nach einem erfolgreichen Lauf von qmake ein Makefile vor, mit Hilfe dessen das gewünschte Programm erzeugt werden kann. Dabei werden sowohl sämtliche Abhängigkeiten beachtet, als auch weitere Regeln im Makefile definiert, mit denen die Ausgaben des Compilers wieder gelöscht werden können. Auch kann das Makefile Regeln zur Installation des erzeugten Programmes enthalten.

Es lassen sich auch Projektdateien für Microsoft-IDEs erstellen und unter macOS wird automatisch eine Projektdatei für Apples IDE Xcode anstatt der Makefiles generiert.

Beispiel

 # beispiel.pro
 TEMPLATE   = app
 HEADERS   += mainwindow.h
 SOURCES   += mainwindow.cpp main.cpp
 RESOURCES += mainwindow.qrc

Nach dem Ausführen des Befehles qmake beispiel.pro existiert nun ein komplettes aber plattformspezifisches Makefile, welches sich mit make oder einem seiner Derivate ausführen lässt.

Siehe auch

Weblinks

Einzelnachweise

<references />