簡體   English   中英

如何使用 Qt 中的應用程序清單生成 Visual Studio 項目?

[英]How to generate a Visual Studio project with app manifest from Qt?

我能夠從 Qt 生成 MSVC 項目 (.vcxproj),但該項目不包含應用程序清單文件 (Package.appxmanifest)。 我曾嘗試使用 qmake 變量 WINRT_MANIFEST 並確保 CONFIG 包含 embed_manifest_exe,但我一定是誤解了一些東西。

我的問題有兩部分:

  1. 如何在 Qt 項目中定義應用程序清單?
  2. 這個應用程序清單如何成為 Qt Creator / qmake 生成的 MSVC 項目的一部分?

我在Windows 10上使用Qt Creator 4.7.1Qt 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 文檔

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_MANIFESTCONFIG contains embed_manifest_exe的組合CONFIG contains embed_manifest_exe意味着應該嵌入默認清單。

我也嘗試過設置WINRT_MANIFEST屬性(例如WINRT_MANIFEST.publisher ),並且嘗試創建自己的 Manifest.xml 並設置WINRT_MANIFEST=Manifest.xml. 但這沒什么區別。

該解決方案非常簡單且“顯而易見”,但由於文檔中沒有提到它,我還沒有意識到它的存在。

問題在這里:

我在 Windows 10 上使用 Qt Creator 4.7.1、 Qt 5.11.2 MSVC2017 64bit並且安裝了 Visual Studio 2017 Community。

應用清單由通用 Windows 平台 (UWP) 應用使用,這些應用使用 WinRT(例如 Windows 應用商店應用)。 Qt 有一套不同的構建工具包。 例如,用於 UWP 32 位 (MSVC 2017) 的 Qt 5.11.2 這些使用mkspecs啟動winrt-並作為UWP x86/64 (MSVC 2017)出現在維護工具/安裝程序中。

使用這些工具包之一時,使用默認的 CONFIG 設置embed_manifest_exe ,您將獲得一個帶有默認清單的 Visual Studio 項目。

要覆蓋默認值,請在 .pro 中指定屬性,例如WINRT_MANIFEST.publisher ,或者創建單獨的清單文件並設置WINRT_MANIFEST=path-to-manifest-file 如果執行后者,假設您的清單文件是與最終 Package.appxmanifest 格式相同的 XML 文件,那么您還需要WINRT_MANIFEST.CONFIG += verbatim

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM