窗户叮当作响

如您所知,VisualStudio现在支持 构建Android和iOS应用程序 使用叮当声。我们意识到用户需要编写跨平台的应用程序,我们知道C++在跨平台领域提供了巨大的利益。Clang在标准一致性和诊断方面取得了惊人的进展,并正在迅速成为非Windows平台的首选C++编译器。为了扩展Clang对C++开发人员为Windows构建应用程序的好处,我们一直致力于Windows上CLAN的实验实现。第一次预演是在 这是吉姆·拉迪根的演讲 .

null

CLAN和LLVM社区已经为提供一个构建Windows C++代码的工具链做了大量工作。 此博客帖子 首先宣布了。  随后的进展也通过其他职位,如 .  他们还提供了包装整齐的 用于Windows的工具集生成 它与visualstudio集成得非常好。  我们的工作建立在社区已经完成的所有令人印象深刻的工作之上。

在我们的最后,做这项工作的主要动机是启用跨平台场景,其中应用程序的一大部分是跨平台C++代码。

图片[1]-窗户叮当作响-yiteyi-C++库

如果您已经构建了跨平台的应用程序,那么您可能有一个类似于上述结构的代码库。这里(1)和(3)是特定于平台的代码片段,要么是因为它们调用了特定于操作系统的API,要么是因为它们碰巧使用了仅由某些特定于平台的编译器工具集提供的编程语言特性。这类代码的存在通常是有真实原因的。但是,同时,应用程序逻辑的一大块(可以)使用适当的标准编写,符合跨平台C++代码。这是上面标记(2)的块。

想象一下,一个应用程序的代码结构类似于上图,它是为各种平台构建的:

  1. 对于Android和iOS,整个应用程序将使用Clang构建
  2. 对于Windows,整个应用程序都将使用Visual C++构建。

这本质上意味着,即使我们调用block(2)cross-platform,我们仍然在为不同的平台使用不同的编译器来构建它。因此,Clang和Visual C++中的任何细微差别都会使你作为开发人员不得不担心这些编译器差异,或者限制你使用两个编译器特征的最小子集。这绝对不理想。

  • 如果您可以对跨平台代码使用单个编译器,而不考虑您的目标平台,该怎么办?
  • 如果您仍然可以使用一个单独的编译器来构建您多年来积累的所有特定于平台(或特定于编译器)的代码呢?
  • 如果你能在上面两个之间拥有丰富的互操作,同时仍然利用优秀的、安全的、调试友好的代码生成引擎,为Visual C++提供电源,并在Windows上构建一些最复杂的软件(几乎所有的……)包括Windows!)?

现在我们所做的工作使这成为可能。这是一个场景,在其中使用Visual C++编译器编译(1)和(3),(2)使用CLAN和代码生成,所有这些都将使用Visual C++后端(我们称之为C2)。 在visualstudio中享受丰富的端到端开发人员体验的同时。

我们相信使用我们的后端作为这项技术的核心给了我们很多好处,因为我们把C2和链接器看作是Windows平台ABI的一部分。 在处理各种条件下支持所有处理器架构的代码生成时,我们认为最好是为.NET Net和现在的Clang(C++和ObjectiveC)提供新的技术。

这是正在进行的工作,我们将在未来几个月更多地讨论这项工作。一如既往,我们期待着您对我们的方案和方法的反馈。

谢谢你

Visual C++团队

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享