QTP0007

Anführungszeichen und Escape-Zeichen umschließen die Werte der übergebenen Argumente in generierten Deployment-Skripten.

Diese Richtlinie wurde in Qt 6.12 eingeführt. Die Richtlinie beeinflusst, wie qt_generate_deploy_app_script() die Werte der Schlüsselwörter, die es an qt_deploy_runtime_dependencies() weiterleitet – wie beispielsweise DEPLOY_TOOL_OPTIONS, PRE_EXCLUDE_REGEXES und POST_EXCLUDE_FILES – in das von ihm generierte Deployment-Skript schreibt.

Ist die Richtlinie auf „ OLD “ gesetzt, werden die Werte ohne Anführungszeichen geschrieben. Bei der Ausführung des generierten Skripts trennt CMake jeden Wert an Leerzeichen und interpretiert darin enthaltene Backslashes als Escape-Sequenzen. Dies führt zu Problemen bei Werten, die Leerzeichen, Backslashes oder doppelte Anführungszeichen enthalten.

Ist die Richtlinie auf „ NEW “ gesetzt, wird jeder Wert als in Anführungszeichen gesetztes Argument geschrieben, wobei Backslashes und doppelte Anführungszeichen als Escape-Zeichen behandelt werden, sodass der Wert unverändert an `qt_deploy_runtime_dependencies()` übergeben wird.

Wenn die Richtlinie nicht festgelegt ist und ein übergebener Wert Leerzeichen, einen Backslash oder ein doppeltes Anführungszeichen enthält, wird eine „ AUTHOR_WARNING “ ausgegeben, und die Werte werden aus Gründen der Abwärtskompatibilität ohne Anführungszeichen geschrieben. Werte ohne diese Zeichen sind davon nicht betroffen, sodass für sie keine Warnung ausgegeben wird.

Beispielsweise eine Code-Signatur-Identität, die Leerzeichen enthält:

# QTP0007 not set - AUTHOR_WARNING is emitted
qt_generate_deploy_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    DEPLOY_TOOL_OPTIONS "-codesign=Developer ID Application: Foo"
)

Die Identität wird als mehrere Argumente an ` macdeployqt ` übergeben, und der Code-Signierungsschritt wählt entweder die falsche Identität aus oder schlägt fehl. Wenn die Richtlinie auf ` NEW ` gesetzt wird, wird sie als einzelnes Argument weitergegeben:

qt_policy(SET QTP0007 NEW)
qt_generate_deploy_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    DEPLOY_TOOL_OPTIONS "-codesign=Developer ID Application: Foo"
)

Beachten Sie, dass ein Projekt, das mehrere Optionen in einem durch Leerzeichen getrennten Wert zusammengefasst hat, sich auf das „ OLD “-Verhalten zum Aufteilen dieser Werte verlassen hat und diese nun als separate Listenelemente übergeben muss, sobald die Richtlinie auf „ NEW “ gesetzt ist:

# Relies on the \c OLD behavior to split the value into four options.
set(options "-hardened-runtime -timestamp -appstore-compliant -verbose=3")
# Correct way to pass options with the \c NEW behavior.
set(options -hardened-runtime -timestamp -appstore-compliant -verbose=3)

Hinweis: Das „ OLD “-Verhalten einer Richtlinie ist veraltet und wird möglicherweise in Zukunft entfernt.

Siehe auch qt_policy(), Qt-CMake-Richtlinien, qt_generate_deploy_app_script() und qt_deploy_runtime_dependencies().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.