Создайте проект Qt с VS C ++ Compiler 15.0 с C ++ 17 для использования WinRT API

Я хотел бы использовать библиотеки, доступные через WinRT API (например, эти) из моего приложения UWP, созданного с использованием Qt 5.9.2 для UWP 64bit (MSVC 2017). Я установил Visual Studio Build Tool 2017 v15.5.7 на мою машину. Windows 10 — это моя ОС.

Теперь я настроил комплект, как показано ниже.

Настройка UWP Kit

Затем в .pro файл, который я добавил:

SOURCES += main.cpp

INCLUDEPATH += $$PWD/cppwinrt/10.0.16299.0/
DEPENDPATH += $$PWD/cppwinrt/10.0.16299.0/

я получил cppwinrt от GitHub rep.

Я просто добавил несколько строк в main.cpp проверить правильность компиляции:

#include <QCoreApplication>
#include <winrt/Windows.Devices.WiFi.h>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

WiFiAdapter wiFiAdapter;

return a.exec();
}

После запуска qmake а также buildЯ получаю эту ошибку:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.12.25827 \ include \ option (15): фатальная ошибка C1189: #error: необязательный шаблон класса доступен только в C + +17.

Документация Windows ясно заявляет, что начиная с v15.3 (опять же у меня есть 15.5.7), компилятор C ++ принимает /std:c++17 флаг. Я попытался передать его, добавив одну из этих строк .pro файл:

CONFIG += c++1z
# Or
QMAKE_CXXFLAG=/std:c++17

Никто из них не помог …..

Это подробная команда сборки, запускаемая компилятором:

cl -c -nologo -FS -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\uwp-test.vc.pdb -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQ_BYTE_ORDER=Q_LITTLE_ENDIAN -DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP -DWINAPI_PARTITION_PHONE_APP=1 -DX64 -D__X64__ -D__x64__ -DQT_DEPRECATED_WARNINGS -DQT_CORE_LIB -I..\uwp-test -I. -I..\ne-patient-app-libraries\cppwinrt\10.0.16299.0 -I..\..\..\..\Qt\5.9.2\winrt_x64_msvc2017\include -I..\..\..\..\Qt\5.9.2\winrt_x64_msvc2017\include\QtCore -Idebug -I..\..\..\..\Qt\5.9.2\winrt_x64_msvc2017\mkspecs\winrt-x64-msvc2017 -Fodebug\ @C:\Users\NEUROE~2\AppData\Local\Temp\main.obj.11672.15.jom

Что мне не хватает? Что может решить проблему? Спасибо!

3

Решение

Ты хочешь QMAKE_CXXFLAGS *= /std:c++17 — т.е. _CXXFLAGS не _CXXFLAG

*= означает добавить его, если он еще не там.

3

Другие решения

Других решений пока нет …