【发布时间】:2012-12-17 22:50:03
【问题描述】:
我目前正在用 C/C++ 构建编译器/解释器。 当我注意到 LLVM 时,我认为它非常适合我的需要,因此我正在尝试将 LLVM 集成到我现有的构建系统中(我使用 CMake)。
我阅读了 this 关于 LLVM 在 CMake 中的集成。我复制并粘贴了示例 CMakeLists.txt,将 LLVM_ROOT 更改为 ~/.llvm/(这是我下载并构建 LLVM 和 clang 的地方),它说它不是有效的 LLVM 安装。我可以实现的最佳结果是通过将 LLVM_ROOT 更改为 ~/.llvm/llvm 的错误消息“找不到 LLVMConfig”。
我的 ~/.llvm/ 文件夹如下所示:
~/.llvm/llvm # this folder contains source files
~/.llvm/build # this folder contains object, executable and library files
我通过 SVN 下载了 LLVM 和 clang。我没有用 CMake 构建它。 是我自己还是 CMakeLists.txt 有问题?
【问题讨论】:
-
"t 非常适合我需要的东西" - 当然可以,但为此,您必须先编译它。而且基本上是不可能的。 (为了说明情况:我也是,我正在编写自己的编译器。我决定从头开始手写词法分析器、解析器、优化器和代码生成器,因为对我来说,做这一切比尝试修复更容易LLVM 损坏的构建系统。)
-
Lexer 和 parser 是手写的,但 JIT 编译似乎很好吃。这不是值得努力的事情吗?
-
当然是(基本上是因为 LLVM 的主要作用是优化),可惜他们没有努力使用标准的构建工具(这被称为“我们是苹果,我们很古怪-综合征”)。
-
从 LLVM 中获得的是具有低级优化的出色机器代码生成。但这也是您得到的全部 - 您必须自己生成正确的 LLVM IR。如果您想要机器代码,那很好,否则,可能有更简单的方法。 @H2CO3 CMake 和 configure+make 似乎是标准的。或者这与他们使用这些工具的方式有关?
-
@H2CO3 是的,但我该怎么办?构建另一个优化框架?而且我只是不想要一种在运行时很糟糕的语言,因为我太懒了。 ;) @delnan 是的,我想要优化的 JIT 编译。我真的很想有函数指针,我可以映射到游戏中的事件或类似的东西上。