是否有可以编译C ++或C的库

时间:2010-10-26 22:37:49

标签: c++ compiler-construction

我来这里是为了问这个问题,因为这个网站过去对我非常有用,似乎有很多知识渊博的用户,即使有时候是形而上学的,也愿意讨论这个问题。而且因为谷歌搜索它不起作用。

Java有一个编译器,然后它有一个可以动态编译java的JDT库(例如在JasperReports中用于将报告模板转换为Java代码)。

我的问题:有没有人知道一个库/项目可以在c / c ++中提供编译作为一组库类。例如:一组类来执行预处理,解析,CodeOptimization,当然还有二进制渲染到可执行映像,如ELF或Win格式。基本上允许人们编译c或c ++ scriptlet作为应用程序的一部分。

5 个答案:

答案 0 :(得分:14)

是的:llvm。特别是clang。至少,这就是他们宣传项目的方式。另外,请检查this question。如果你决定使用llvm可能是相关的。

答案 1 :(得分:5)

您可以根据需要调整LLVM项目中的内容。

答案 2 :(得分:4)

您可以只需要安装编译器,然后调用它。这是一个相当大的要求,但关于真正“嵌入”C或C ++的唯一方法。您可以嵌入interpreters,但目前这似乎是一个糟糕的选择,因为脚本中使用的任何库都必须安装开发版本(即头文件和源代码/编译库),并且这些库可以限制为解释器支持的功能集(例如模板实现的质量)。

你最好使用像Python或Lua这样的语言来嵌入。

答案 3 :(得分:1)

有ch解释器,但我没有使用它。通常,对于脚本类型应用程序,使用更自然的脚本语言。

答案 4 :(得分:1)

大。看起来LLVM就像我追求的那样。 非常感谢您的反馈。 我不是主要用C ++作为脚本语言。我注意到Python被用作嵌入式脚本引擎。 我的主要原因有两个:

  1. 摆脱Make,CMake和Autoconf的地狱,并将其替换为与Scons结合并与编译的所有阶段相互作用的东西
  2. 解析并自动生成代码后进入编译过程。具体的元相关代码。在我的例子中,我已经能够在C ++中实现Java的几乎所有功能,除了一个:Reflection。
  3. 为什么强加你的代码而不像RTTI这样通常不够的bload。相反,可以选择性地生成附加功能。但开发人员必须选择何时以及如何使用这些额外的代码。