qmake
wird speziell mit Anführungszeichen und Backslashes umgehen.
Ihr Endziel ist es, ein Zeichenfolgenliteral als Erweiterung von SRCDIR
definiert zu haben. String-Literale in C++ sind in doppelten Anführungszeichen enthalten, daher benötigen Sie diese Anführungszeichen, um sie als Teil der Definition zum Compiler durchzuwandeln.
Mit anderen Worten, möchten Sie das Äquivalent von:
#define SRCDIR "somedir/"
wo somedir
ist das aktuelle Arbeitsverzeichnis, in diesem Beispiel. Um dies zu erreichen, möchten Sie das Zitat (qmake
) nicht mit \"
umgehen. Dies steht an beiden Enden der Saite.
Nun, was ist mit dem Escape Backslash, \\
? Nun, das entzieht sich dem Zitat aus der Shell-Verarbeitung. Wenn der Befehl an die Shell übergeben wird, werden die Anführungszeichen als Teil der Verarbeitung der Shell entfernt. Um sicherzustellen, dass diese Anführungszeichen erhalten bleiben und ein Zeichenfolgenliteral definiert wird, müssen Sie sie auch auf dieser Ebene mit einem umgekehrten Schrägstrich versehen. Die Shell konvertiert \"
in "
. So ist die volle Escape-Sequenz für ein doppeltes Anführungszeichen in diesem Fall:
\\\"
Dieses Token wird an beiden Enden der definierten Zeichenfolge. Der Schrägstrich macht es einfach, den Pfad innerhalb des Codes zu verwenden. Es entfällt die Notwendigkeit, einen /
überall dort hinzuzufügen, wo Sie den Pfad verwenden.
#define SRCDIR "somedir/"
:
Der Befehl, der die Schale wie
und die Definition von
SRCDIR
innerhalb der Compiler eine Stringliteral, das entspricht der folgenden Definition in-source wird aussehen sieht. ..wenn qmake gebrochen ist, wenn es um das Zitieren geht –