【发布时间】:2019-11-22 02:24:14
【问题描述】:
我正在编译一个基于 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?
【问题讨论】:
-
我对@987654321@ 的阅读表明它关闭
CompileAsWinRt标志,这将添加/ZW- -
嗯,也许我错误地确定了问题的根本原因。它的基础是——当我构建时,变量名
interface被选为关键字,这告诉我正在使用 C++/CX 编译器,而不是标准 C++。我将深入研究 cmake 源代码,并根据需要改写我的问题。感谢您的提示。 -
一个 MCVE 和相应的错误代码将帮助我们帮助您。
-
当然——抱歉,我认为这是一个更普遍的问题。我将用 interface 关键字重新措辞标题/正文以针对我的特定问题,包括一个最小的示例。
-
原来我确实在这里混淆了问题。无论图片中是否包含 WinRT/UWP,
interface似乎都是 MSVC (docs.microsoft.com/en-us/cpp/cpp/interface?view=vs-2019) 上的保留关键字。为噪音道歉,并感谢指向 cmake 代码的指针@Botje
标签: c++ windows uwp cmake c++-winrt