QTP0007

生成されたデプロイスクリプト内の引数値に引用符とエスケープ文字を付加する。

このポリシーは Qt 6.12 で導入されました。このポリシーは、qt_generate_deploy_app_script() が、DEPLOY_TOOL_OPTIONS 、PRE_EXCLUDE_REGEXES 、POST_EXCLUDE_FILES などのキーワードの値を、qt_deploy_runtime_dependencies() に渡す際に、生成されるデプロイスクリプトにどのように書き込むかに影響します。

ポリシーがOLD に設定されている場合、値は引用符なしで書き込まれます。生成されたスクリプトが実行されると、CMake は各値を空白で分割し、その中のバックスラッシュをエスケープシーケンスとして解釈します。これにより、空白、バックスラッシュ、または二重引用符を含む値で問題が発生します。

ポリシーが `NEW` に設定されている場合、各値は引用符で囲まれた引数として書き出され、バックスラッシュと二重引用符はエスケープされるため、値は変更されずに`qt_deploy_runtime_dependencies()` に渡されます。

ポリシーが設定されておらず、転送された値にスペース、バックスラッシュ、またはダブルクォートが含まれている場合、AUTHOR_WARNING が発生し、下位互換性を確保するために値は引用符なしで書き込まれます。これらの文字を含まない値は影響を受けないため、それらについては警告は発生しません。

たとえば、スペースを含むコード署名識別子の場合:

# 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"
)

この識別子は複数の引数としてmacdeployqt に到達し、コード署名ステップでは誤った識別子が選択されるか、処理が失敗します。ポリシーをNEW に設定すると、単一の引数として渡されます:

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

なお、複数のオプションをスペース区切りの単一の値にまとめたプロジェクトは、OLD の動作によってそれらが分割されることを前提としていました。ポリシーをNEW に設定すると、それらを個別のリスト要素として渡す必要があります:

# 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)

注: ポリシーの `OLD `動作は 非推奨となっており、将来的に削除される可能性があります。

qt_policy()、Qt CMake ポリシー、qt_generate_deploy_app_script()、および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.