使用CMake定位C ++ / WinRT

时间:2019-07-12 10:14:07

标签: c++ windows uwp cmake c++-winrt

我正在编译一个基于CMake的第三方C ++共享库,以便在UWP应用程序中使用。

根据MSDN上的文档,我一直在使用标志-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0进行构建。虽然这对于标记任何不允许的或不可用的API非常有用,但我的理解是它设置了/ZW标志,从而启用了C++/CX

除了一些小问题(例如,该库用于网络连接,并使用变量名interface,它显然是C ++ / CX的保留关键字),这基本上是可以的。

从根本上来说,由于我正在构建标准的C ++库,所以我宁愿使用标准的C ++(C ++ / WinRT)。有没有办法告诉CMake以WindowsStore SDK为目标,而又不带C ++ / CX?

1 个答案:

答案 0 :(得分:0)

这是一个谬误的问题。潜在问题与C ++ / CX或UWP无关-包括windows.h的{​​{1}}内有combaseapi.h的提取。因此,MSVC将接口视为#define interface __STRUCT__关键字。

[原始错误答案引用struct是MSVC上每个https://docs.microsoft.com/en-us/cpp/cpp/interface?view=vs-2019的保留关键字。正如评论中指出的那样,这也是不正确的。