llvm&x27;s-cmake积分

llvm&x27;s-cmake积分,cmake,llvm,Cmake,Llvm,我目前正在用C/C++构建一个编译器/解释器。 当我注意到LLVM时,我认为它非常适合我所需要的,所以我尝试将LLVM集成到我现有的构建系统中(我使用CMake) 我读过关于在CMake中集成LLVM的文章。我复制并粘贴了示例CMakeLists.txt,将LLVM_根更改为~/.LLVM/(这是我下载并构建LLVM和clang的地方),它说它不是有效的LLVM安装。通过将LLVM_ROOT更改为~/.LLVM/LLVM,我可以获得的最佳结果是错误消息“找不到LLVMConfig” 我的~/.l

我目前正在用C/C++构建一个编译器/解释器。
当我注意到LLVM时,我认为它非常适合我所需要的,所以我尝试将LLVM集成到我现有的构建系统中(我使用CMake)

我读过关于在CMake中集成LLVM的文章。我复制并粘贴了示例CMakeLists.txt,将LLVM_根更改为~/.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有问题?

这个CMake文档页面已经腐烂,但是为LLVM开发设置CMake与其他项目没有什么不同。如果您的头/lib被安装到非标准前缀中,CMake将无法猜测它

您需要将
CMAKE_PREFIX_PATH
设置为LLVM安装前缀,或将
CMAKE_MODULE_PATH
设置为
PREFIX/share/LLVM/CMAKE
以使其正常工作


是的,使用文档中的第二个代码片段(在
下,您也可以使用CMake的find_包功能。
行)。

这个CMake文档页面已经腐烂,但是为LLVM开发设置CMake与任何其他项目没有什么不同。如果您的头/lib被安装到非标准前缀中,CMake将无法猜测它

您需要将
CMAKE_PREFIX_PATH
设置为LLVM安装前缀,或将
CMAKE_MODULE_PATH
设置为
PREFIX/share/LLVM/CMAKE
以使其正常工作



是的,使用文档中的第二个代码段(在
下,您也可以使用CMake的find_package功能。
行)。

“t将非常适合我需要的东西”-当然会,但为此,您必须先编译它。这基本上是不可能的。(为了说明这种情况:我也是,我正在编写自己的编译器。我决定从头开始手工编写lexer、解析器、Optimizer和代码生成器,因为对我来说,做所有这些都比修复LLVM损坏的构建系统容易。)lexer和parser都是手写的,但JIT编译似乎很美味。这项工作值得吗?当然值得(基本上是因为LLVM的主要作用是优化),可惜他们没有努力使用标准的构建工具(这被称为“我们是苹果,我们是偏心综合症”)。你从LLVM得到的是一流的机码生成和低级优化。但这也是您所能得到的——您必须自己生成正确的LLVM IR。如果你想要机器代码,那很好,否则,可能有一个更简单的方法@H2CO3 CMake和configure+make似乎是标准配置。或者这是关于他们使用这些工具的方式?@H2CO3是的,但我该怎么办?构建另一个优化框架?我只是不想要一种在运行时很糟糕的语言,因为我太懒了delnan是的,我想要优化的JIT编译。我真的很想有一个函数指针,我可以映射到游戏中的事件或类似的东西。“t将非常适合我需要的东西”-当然会,但要做到这一点,你必须先编译它。这基本上是不可能的。(为了说明这种情况:我也是,我正在编写自己的编译器。我决定从头开始手工编写lexer、解析器、Optimizer和代码生成器,因为对我来说,做所有这些都比修复LLVM损坏的构建系统容易。)lexer和parser都是手写的,但JIT编译似乎很美味。这项工作值得吗?当然值得(基本上是因为LLVM的主要作用是优化),可惜他们没有努力使用标准的构建工具(这被称为“我们是苹果,我们是偏心综合症”)。你从LLVM得到的是一流的机码生成和低级优化。但这也是您所能得到的——您必须自己生成正确的LLVM IR。如果你想要机器代码,那很好,否则,可能有一个更简单的方法@H2CO3 CMake和configure+make似乎是标准配置。或者这是关于他们使用这些工具的方式?@H2CO3是的,但我该怎么办?构建另一个优化框架?我只是不想要一种在运行时很糟糕的语言,因为我太懒了delnan是的,我想要优化的JIT编译。我真的很想有功能指针,我可以映射到游戏中的事件或类似的东西。谢谢,这正是我想要的。我的“修复”几乎有同样的效果,但它非常混乱。我唯一的问题是它找不到库“jit”。我可以插入'all'和'native'而不会出现CMake错误。我需要重建图书馆吗?我将文件夹从“~/.llvm/llvm”和“~/.llvm/build”更改为“~/.llvm”和“~/.llvm/build”。CMake缓存中的
llvm\u NATIVE\u ARCH
值是多少?呃,我可以用“消息(致命错误”${llvm\u NATIVE\u ARCH}”检查它吗“?您可以使用CMake GUI,也可以只使用grep
builddir/CMakeCache.txt
文件。我通过‘cat bin/CMakeCache.txt | grep LLVM’找到的唯一LLVM条目是这个‘LLVM_DIR:PATH=/home/bash0r/.LLVM/CMake/modules’。谢谢,这是我想要的。我的“修复”几乎有同样的效果,但它非常混乱。我唯一的问题是它找不到库“jit”。我可以插入'all'和'native'而不会出现CMake错误。我需要重建图书馆吗?我将文件夹从“~/.llvm/llvm”和“~/.llvm/build”更改为“~/.llvm”和“~/.llvm/build”。CMake缓存中的
llvm\u NATIVE\u ARCH
值是多少?呃,我可以用“消息(致命错误”${llvm\u NATIVE\u ARCH}”检查它吗“?您可以使用CMake GUI,也可以只使用grep
builddir/CMakeCache.txt
文件。我通过“cat bin/CMakeCache.txt | grep LLVM”找到的唯一LLVM条目是这个“LLVM\u DIR:PATH=/home/bash0r/.LLVM/CMake”