define in .pro-file in qt-creator

Gast #6352719
Hallo,
ich habe in einer .pro file (qt crator unter linux) ein define für ein 
pfad erstellt.
1
DEFINES += PATH = "/mnt/home/project/\n"
in der .c file wird dieses Define aber nicht erkannt (undeclared).

die .pro file includiert eine .pri. Diese beinhaltet dann die .c-datei
Wie bekomme ich das hin, dass das Define im code erkannt wird?
Laut QT Handbuch:

"DEFINES += USE_MY_STUFF
The above line appends USE_MY_STUFF to the list of pre-processor defines 
to be put in the generated Makefile."

Präprozessor! Also mußt du warscheinlich schreiben:

#ifdef USE_MY_STUFF
 ....
#endif

Oder in deinem Fall sowas wie

std::string path(PATH);
Marcel schrieb:
> DEFINES += PATH = "/mnt/home/project/\n"

Bist du sicher, dass der Pfad auf ein Newline enden soll? So würde ich 
das als eine Datei oder ein Verzeichnis mit Namen "\n" verstehen, die 
unter "/mnt/home/project" liegt.
Wie dem auch sei, ich würde es mal am Stück probieren:
1
DEFINES += "PATH=/mnt/home/project/\n"
PS:

Wobei dann der Text im C++-Code nicht in Anführungszeichen steht. Da 
müsste man die vermutlich mehrfach escapen.
Laut 
https://stackoverflow.com/questions/3348711/add-a-define-to-qmake-with-a-value 
müsste es so aussehen:
1
DEFINES += PATH=\\\"/mnt/home/project/\\\\n\\\"
Oliver S. schrieb:
> DEFINES += PATH="/mnt/home/project/"
>
> Keine Leerzeichen, kein \n, Pfad in ""

So kommen die Anführungszeichen aber nicht in C++ an, sondern werden 
schon in qmake entfernt. In der Compiler-Kommandozeile steht dann nur 
noch
1
-DPATH=/mnt/home/project/

Deshalb escapen. Ein einzelnes Escape (also \" statt nur ") reicht aber 
nicht, da dann die Anführungszeichen von der Shell, in der der Compiler 
aufgerufen wird, entfernt werden. Also muss man auch das \ noch escapen, 
also eben \\\".

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.