[gelöst] Slash/Backslash ersetzen mit qmake built-in Func

Alles rund um die Programmierung mit Qt
Antworten
matthiasw
Beiträge: 20
Registriert: 24. April 2014 13:50

[gelöst] Slash/Backslash ersetzen mit qmake built-in Func

Beitrag von matthiasw »

Hallo zusammen,

ich arbeite mit Qt 5.4 und dem Qt Creator 3.3.0 unter Win7. In meiner Projektdatei möchte ich den lokalen Pfad der Qt-Dlls in eine separate Datei schreiben, um mit Inno Setup ein Softwarepaket zu schnüren. Das klappt an sich auch.

in .pro-Datei:

DLL_DIR = $$dirname(QMAKE_QMAKE) # speichert Pfad der qmake.exe, in dem sich auch die meisten Qt-Dlls befinden
DLL_DIR_ISS = "$$LITERAL_HASH define DllDir \"$$DLL_DIR\"" # erzeugt ein # define ...
write_file(./install/version.iss,DLL_DIR_ISS,append) # schreibt das # define ... in eine .iss Datei für Inno Setup

Der ausgegebene Pfad wird allerdings mit / angegeben, ich möchte ihn aber zuvor in \ wandeln, da alle Pfadangaben in der .iss-Datei mit \ sind. Dafür habe ich leider keine passende qmake-Funktion gefunden.

replace(DLL_DIR,/,\) # führt zu Fehlermeldung: Missing closing parenthesis in function call
replace(DLL_DIR,/,\\) # führt zu Fehlermeldung: 'replace' is not a recognized test function.
replace(DLL_DIR,/,"\\") # führt zu Fehlermeldung: 'replace' is not a recognized test function.
replace(DLL_DIR,/,\"\\\") # führt zu Fehlermeldung: 'replace' is not a recognized test function.

Auch mit vorangestelltem $$ vor DLL_DIR funktioniert es nicht oder mit dem / in "/" gekapselt. Kann mir da vielleicht jemand auf die Sprünge helfen?

Viele Grüße

Matthias
Zuletzt geändert von matthiasw am 18. Mai 2015 08:25, insgesamt 1-mal geändert.
matthiasw
Beiträge: 20
Registriert: 24. April 2014 13:50

Re: Slash/Backslash ersetzen mit qmake built-in Funktion

Beitrag von matthiasw »

Ich habe gerade noch ein wenig herumprobiert.

DLL_DIR = $$replace(DLL_DIR,/,\\) # funktioniert endlich!

Ich habe immer übersehen, dass replace die neue Variable in einem Rückgabewert speichert, der bei meinen bisherigen Aufrufen immer gefehlt hat... :oops:

Viele Grüße

Matthias
Antworten