【发布时间】:2018-10-25 09:11:46
【问题描述】:
我能够从 Qt 生成一个 MSVC 项目 (.vcxproj),但该项目不包含应用程序清单文件 (Package.appxmanifest)。我已经尝试使用 qmake 变量 WINRT_MANIFEST 并确保 CONFIG 包含 embed_manifest_exe 但我一定是误解了一些东西。
我的问题分为两部分:
- 如何在我的 Qt 项目中定义应用清单?
- 此应用清单如何成为 Qt Creator / qmake 生成的 MSVC 项目的一部分?
我在 Windows 10 上使用 Qt Creator 4.7.1、Qt 5.11.2 MSVC2017 64bit,并且我有 Visual已安装 Studio 2017 社区。
我已经尝试过的
构建 MSCV 项目
基于 Qt for WinRT documentation 和 Qt 社区的帮助,我运行以下命令(通过 QMAKE_POST_LINK,在我的 .pro 中设置):
windeployqt --release --compiler-runtime --qmldir path-to-my-qml-files
qmake -tp vc path-to-my-.pro -o path-to-build-folder/target-name.vcxproj CONFIG+=release
这些成功创建了一个 MSVC 项目,并且发布文件夹包含部署所需的所有库和一个 vcredist_xxx.exe。
阅读 Windows 应用清单上的 Qt 文档
Qt documentation for Windows deployment > Manifest files:
部署使用 Visual Studio 编译的应用程序时,需要执行一些额外的步骤。首先,我们需要复制链接应用程序时创建的清单文件。 ...从 Qt 4.1.3 开始,以下 CONFIG 选项可用于嵌入清单:
embed_manifest_dllembed_manifest_exe这两个选项都默认启用。
因此,据我了解,如果启用了 CONFIG 选项 embed_manifest_exe(默认情况下),那么在运行 qmake 时应该嵌入清单。
Qt documentation for Qmake variables > WINRT_MANIFEST:
指定要传递给应用程序清单的参数。
这些已列出,其中许多有默认值。
那么为什么没有生成应用清单?即使我自己没有指定任何内容,WINRT_MANIFEST 和 CONFIG contains embed_manifest_exe 的组合肯定意味着应该嵌入默认清单。
我也尝试过设置WINRT_MANIFEST 属性(例如WINRT_MANIFEST.publisher),并尝试创建自己的Manifest.xml 并设置WINRT_MANIFEST=Manifest.xml. 但这没有区别。
【问题讨论】:
标签: windows qt manifest qmake appxmanifest