Univerzální platforma Windows (UPW)
Vcpkg zahrnuje trojité tečky pro vytváření aplikací Univerzální platforma Windows (UPW) pomocí kompilátoru MSVCcl.exe
.
Architektura | vcpkg triplets | Komunita |
---|---|---|
x64 | x64–upw | |
x64-uwp-static-md | Ano | |
x86 | x86–upw | Ano |
x86-uwp-static-md | Ano | |
paže | arm-uwp | |
arm-uwp-static-md | Ano | |
arm64 | arm64-uwp | Ano |
arm64-uwp-static-md | Ano |
Aplikace PRO UPW obvykle využívají prostředí Windows Runtime rozhraní API a existuje celá řada řešení pro jejich použití z jazyka C++. Rozšíření jazyka C++/CX pro kompilátor MSVC (/ZW
), projekce jazyka C++/WinRT, které fungují s kompilátory C++17 nebo knihovnou prostředí Windows Runtime.
UWP triplet toolchain ponechá povolení jazykových rozšíření C++/CX (/ZW
) až do CMake, ale poskytne /FU
parametr, který bude odkazovat na správný platform.winmd
soubor používané sady nástrojů.
Projekty CMake pro tyto triplety se sestavují pomocí CMAKE_SYSTEM_NAME
nastavení na "WindowsStore" a CMAKE_SYSTEM_VERSION
jsou nastaveny na "10.0".
Triplety UPW také sestavují kód využívající /DWINAPI_FAMILY=WINAPI_FAMILY_APP
oddíl rozhraní API, takže knihovny se nedají sestavit, pokud používají nepodporované verze rozhraní API Win32. Obecně se doporučuje používat novější rozhraní API ve všech případech, ale pokud potřebujete vytvořit stejnou knihovnu pro starší verze Windows, budete možná muset použít podmíněně sestavovat kód, například následující, abyste podporovali oba scénáře.
HANDLE hFile = nullptr;
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
hFile = CreateFile2(
fileName,
GENERIC_READ, FILE_SHARE_READ, OPEN_EXISTING,
nullptr);
#else
hFile = CreateFileW(
fileName,
GENERIC_READ, FILE_SHARE_READ,
nullptr,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
nullptr);
#endif
Trojice UPW se také sestavuje s /DUNICODE /D_UNICODE
tím, jak se důrazně doporučují pro moderní vývoj. Další informace najdete v manifestu UTF-8 Všude.
Pro CMake 3.1 nebo novější řídíte povolení jazykových rozšíření MSVC C++/CX (tj. /ZW
) prostřednictvím VS_WINRT_COMPONENT
vlastnosti generátoru sady Visual Studio.
Pokud používáte projekce jazyka C++/WinRT, využijte port cppwinrt vcpkg a nespoléhejte na často zastaralé hlavičky v sadě Windows SDK.
if (VCPKG_TOOLCHAIN)
message(STATUS "Using VCPKG for C++/WinRT.")
find_package(cppwinrt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::CppWinRT)
endif()
CMakeLists.txt
V souboru použijte něco podobného jako následující, abyste povolili správná nastavení sestavení pro platformu UPW, protože CMake je nenastavuje automaticky.
if(WIN32)
target_compile_definitions(${PROJECT_NAME} PRIVATE _UNICODE UNICODE)
if(WINDOWS_STORE)
target_compile_definitions(${PROJECT_NAME} PRIVATE WINAPI_FAMILY=WINAPI_FAMILY_APP)
endif()
endif()
Měli byste nastavit _WIN32_WINNT=0x0A00
(Windows 10 nebo novější) i pro všechny WIN32
platformy nebo alespoň pro WINDOWS_STORE
sestavení platformy.
if(WIN32)
target_compile_definitions(${PROJECT_NAME} PRIVATE _WIN32_WINNT=0x0A00)
endif()
Zpětná vazba k produktu vcpkg
vcpkg je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: