Forum: PC-Programmierung define in .pro-file in qt-creator


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Marcel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe in einer .pro file (qt crator unter linux) ein define für ein 
pfad erstellt.
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?

von Thomas W. (goaty)


Bewertung
0 lesenswert
nicht lesenswert
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);

von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht lesenswert
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:
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:
DEFINES += PATH=\\\"/mnt/home/project/\\\\n\\\"

: Bearbeitet durch User
von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
DEFINES += PATH="/mnt/home/project/"

Keine Leerzeichen, kein \n, Pfad in ""

Allerdings sollte der Compiler in Fehlerfall schon die Kommandozeile 
anmeckern, und gar nicht erst weitermachen.

Oliver

: Bearbeitet durch User
von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht lesenswert
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
-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 \\\".

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.