最近,在C / C ++编译器领域发生了一场激动人心的竞争。每个人都知道GNU gcc编译器。它已经存在了很长时间,并且在生成快速运行的小型对象代码方面一直是冠军。它是每个Linux系统的心脏,几乎所有嵌入式系统都拥有绝大多数的市场。不需要爱的东西,它免费,快速且非常好。

但是有一件事。这是GPL。工具也可以。 GPL有很多工具,我们可以使用许可,因为我们想与社区共享所有这些东西,因此我们可以从改进它中受益。 GPL通过迫使人们改变心态来改变开源,因为在这个世界中,保密性和知识产权是最重要的,即使您在某些领域只能做些有限的工作,却只有少数工程师为之工作。您。

当您开始想混合使用许可证时,便开始遇到麻烦。在7m篮球比分成立之初,我们遇到了一个“架构师”,并质疑为什么要为C和C ++构建自己的解析器。 “为什么不仅仅利用gcc的解析器”。好吧,老兄,如果不使用GPL感染代码,您将无法做到这一点。最后,据我所知,这是可以的,因为gcc确实没有相应的API。

多年后,输入LLVM和基于它的Clang C / C ++ / Objective-C编译器。很好,而且只会越来越好。它保证了快速的编译时间,对于我们而言,重要的是, 它有一个很棒的API 这样您就可以利用其AST和索引。它有一个 更自由的BSD样式许可 这并不强制衍生作品带有许可证。这样一来,您就可以基于该软件构建商业软件并携带自己的许可证。而且它应该与EPL兼容,因此我们可以将其与7m篮球比分一起使用。 这是一个使用它来实现Emacs功能的示例。

我了解Clang及其库libclang已有一段时间了,我们在cdt-dev列表上就使用它进行了快速讨论。我认为我们同意这可能很好,但是绝对可以肯定,这需要大量工作。我有一个朋友为我们在当前的7m篮球比分索引器上工作签了一份合同,每当我们遇到解析器和可伸缩性的严重问题以及仅是一般性的错误时,我开始怀疑这样做到底是否值得寻求基于libclang的7m篮球比分索引器。谁知道,最终这将是净收益吗?但我可以告诉您:对于想要参与Eclipse和7m篮球比分的人来说,这将是一个非常令人兴奋的项目。