背景:我需要构建一个 Windows 运行时组件作为系统的一部分,该系统设置为使用CMake生成其构建系统。作为准备步骤,我正在尝试在命令行上构建它。
从一个简单的 .idl 文件(MyType.idl)开始
namespace NS
{
[default_interface]
runtimeclass MyType
{
}
}
我正在尝试使用midlrt.exe工具生成匹配的 .winmd 文件。以下命令行(为了便于阅读,分成几行)
midlrt
/metadata_dir "%WindowsSdkDir%References\%WindowsSDKVersion%Windows.Foundation.FoundationContract\3.0.0.0"
/reference "%WindowsSdkDir%References\%WindowsSDKVersion%Windows.Foundation.FoundationContract\3.0.0.0\Windows.Foundation.FoundationContract.winmd"
/winmd MyType.winmd
/notlb
/winrt
/nomidl
/nologo
/enum_class
/ns_prefix
/client none
/server none
MyType.idl
生成 MyType.winmd 文件就好了,但我不知道为什么。我对/metadata_dir
and/reference
选项特别困惑。跑步midlrt /help
提供以下内容:
/metadata_dir Specify one or more directories containing platform metadata files
/reference Specify one or more WinMD files to import
/metadata_dir上的官方文档并没有增加太多(除了一个令人困惑的评论:“使用此开关指定 Windows 的主要元数据文件的位置,名为 windows.winmd。”)。没有文档/reference
。
以下是我需要帮助的内容:
- 我真正需要通过什么
/metadata_dir
选择?正如上面命令行中使用的那样,它看起来像是对部分/reference
选项的冗余复制。但是,将其排除在外会产生编译器错误。 - 如何确定所需的列表,
/reference
包括其特定版本?