我能够从 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 Community。
我已经尝试过的
构建 MSCV 项目
基于Qt for WinRT 文档和 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 文档
部署使用 Visual Studio 编译的应用程序时,需要执行一些额外的步骤。首先,我们需要复制链接应用程序时创建的清单文件。... 从 Qt 4.1.3 开始,以下 CONFIG 选项可用于嵌入清单:
embed_manifest_dll
embed_manifest_exe
默认情况下启用这两个选项。
因此,据我了解,如果启用了 CONFIG 选项embed_manifest_exe
(默认情况下),那么在运行 qmake 时应该嵌入清单。
Qmake 变量的 Qt 文档 > WINRT_MANIFEST:
指定要传递给应用程序清单的参数。
列出了这些,其中许多具有默认值。
那么为什么没有生成应用清单呢?即使我自己没有指定任何内容,当然 和 的组合WINRT_MANIFEST
应该CONFIG contains embed_manifest_exe
意味着应该嵌入默认清单。
我也尝试过设置WINRT_MANIFEST
属性(例如WINRT_MANIFEST.publisher
),我尝试过创建自己的 Manifest.xml 并进行设置WINRT_MANIFEST=Manifest.xml.
,但这并没有什么区别。