İngilizce dilinde oku

Aracılığıyla paylaş


Evrensel Windows Platformu (UWP)

Üçüz

vcpkg, MSVC cl.exe derleyicisini kullanarak Evrensel Windows Platformu (UWP) uygulamaları oluşturmak için üçlüler içerir.

Mimari vcpkg üçlüleri Topluluk
x64 x64-uwp
x64-uwp-static-md Yes
x86 x86-uwp Yes
x86-uwp-static-md Yes
kol arm-uwp
arm-uwp-static-md Yes
arm64 arm64-uwp Yes
arm64-uwp-static-md Yes

C++/CX ile C++/WinRT projeksiyonları karşılaştırması

UWP uygulamaları genellikle Windows Çalışma Zamanı API'leri kullanır ve bunları C++'tan kullanmak için bir dizi çözüm vardır. MSVC derleyicisi (/ZW ) için C++/CX dil uzantıları, C++17 derleyicileriyle çalışan C++/WinRT dil projeksiyonları veya Windows Çalışma Zamanı Kitaplığı.

UWP üçlü araç zinciri, CMake'ye kadar C++/CX dil uzantılarını (/ZW) etkinleştirerek ayrılır, ancak kullanılan araç takımı için uygun platform.winmd dosyaya işaret eden bir /FU parametre sağlar.

Bakımcı notları

Bu üçüzler için CMake projeleri , "WindowsStore" ve CMAKE_SYSTEM_VERSION "10.0" olarak ayarlanmış kullanılarak CMAKE_SYSTEM_NAME oluşturulur.

UWP üçlüleri de API bölümü için kullanarak /DWINAPI_FAMILY=WINAPI_FAMILY_APP kod oluşturur, bu nedenle Win32 API'lerinin desteklenmeyen sürümlerini kullanıyorlarsa kitaplıklar derlenemez. Genel öneri, her durumda daha yeni API'leri kullanmaktır, ancak Windows'un eski sürümleri için aynı kitaplığı oluşturmanız gerekiyorsa, her iki senaryoyu da desteklemek için aşağıdaki gibi koşullu derleme kodunu kullanmanız gerekebilir.

    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

UWP üçüzleri de ile /DUNICODE /D_UNICODE oluşturulur, bu ikisi de modern geliştirme için şiddetle tavsiye edilir. Daha fazla bilgi için UTF-8 Everywhere bildirimine bakın.

Kitaplık yazarı notları

CMake 3.1 veya üzeri için, Visual Studio oluşturucusunun özelliği aracılığıyla MSVC C++/CX dil uzantılarının (örneğin/ZW) etkinleştirilmesini VS_WINRT_COMPONENT denetleyebilirsiniz.

C++/WinRT dil projeksiyonlarını kullanıyorsanız, Windows SDK'sında sık sık güncel olmayan üst bilgileri kullanmak yerine cppwinrt vcpkg bağlantı noktasından yararlanın.

if (VCPKG_TOOLCHAIN)
    message(STATUS "Using VCPKG for C++/WinRT.")
    find_package(cppwinrt CONFIG REQUIRED)
    target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::CppWinRT)
endif()

Dosyanızda CMakeLists.txt , CMake tarafından otomatik olarak ayarlanmadığından UWP platformu için uygun derleme ayarlarını etkinleştirmek için aşağıdakine benzer bir şey kullanın.

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()

Tüm WIN32 platformlar için veya en azından platform derlemeleri için WINDOWS_STORE (Windows 10 veya üzeri) ayarlamanız _WIN32_WINNT=0x0A00 gerekir.

if(WIN32)
    target_compile_definitions(${PROJECT_NAME} PRIVATE _WIN32_WINNT=0x0A00)
endif()

Daha fazla bilgi