QTP0008

在不重新评估的情况下直接传递部署脚本的参数。

该策略自 Qt 6.12 起引入。该策略影响无版本号的qt_generate_deploy_script()和qt_generate_deploy_app_script()命令将其参数传递给实现代码的方式。

这两个命令以前都是宏。宏会按字面替换其参数,且结果会再次被解析,因此参数值中的转义序列和${} 引用会被二次求值。项目必须对这类值进行双重转义以进行补偿。

如果策略设置为 `OLD`,这些值将通过宏传递,因此会像以前一样被重新求值。

如果策略设置为NEW ,则值将通过宏转发,因此保持不变。

当未设置该策略时,值会像设置为 `OLD` 时那样被重新求值,并且会发出 `AUTHOR_WARNING ` 警告,但仅当重新求值确实改变了其中一个值时才会发出。该警告会显示前后值,以便清楚地知道需要进行哪些调整。

请看下面的代码片段:

qt_generate_deploy_script(
    OUTPUT_SCRIPT deploy_script
    CONTENT "
qt_deploy_qt_conf(\"\${QT_DEPLOY_PREFIX}/qt.conf\")
"
)

当策略未设置或为OLD 时,引用会在参数转发时被展开,生成的脚本中最终会出现qt_deploy_qt_conf("/qt.conf") 。当策略设置为NEW 时,引用会保留到生成的脚本中,并在脚本运行时被展开。

当策略未设置或设置为OLD 时,包含无效反斜杠转义符的转发值将在命令调用时失败。在CMake报告错误之前,会输出一个引用此策略的AUTHOR_WARNING 。

注意: 策略的OLD 行为 已被弃用,未来可能会被移除。

另请参阅 qt_policy()、Qt CMake 策略、qt_generate_deploy_script() 以及qt_generate_deploy_app_script()。

© 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.