繁体   English   中英

如何在 c++ Xcode 项目中使用 LLVM 库?

[英]How to use LLVM library in c++ Xcode project?

我正在松散地按照教程在 LLVM 网站上实现 Kaleidoscope ,我现在需要实际使用 LLVM 库进行代码生成。 我已经使用自制软件( brew install llvm )安装了 LLVM 13,但我不知道如何在 Xcode 的 c++ 项目中使用它。 对于我尝试包含的每个文件,我只是收到错误'llvm/whatever/whatever' file not found

#include "llvm/ADT/STLExtras.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Verifier.h"

我已经尝试将包含文件夹( /opt/homebrew/Cellar/llvm/13.0.1_1/include对我来说)添加到 Xcode 中的 header 搜索路径中,这似乎有作用,但我最终得到错误Undefined symbol: llvm::DisableABIBreakingChecks和数百种不同的警告。

我想要的只是能够在一个小型 c++ 项目中使用 LLVM 代码生成。 有什么简单的方法可以做到这一点吗?

我也在做那个教程。 我会告诉你我是如何让它工作的,但由于我不是 LLVM 专家,我不知道这是否是最好的方法。

我签出并从源代码构建了 LLVM,如此处所述 像您一样使用 brew 安装也应该可以正常工作。

接下来,我查看了他们在教程中给出的构建命令:

clang++ -g -O3 toy.cpp `llvm-config --cxxflags --ldflags --system-libs --libs core` 
        -o toy

我可以从我的构建目录运行该llvm-config命令,它为我提供了我需要以某种方式提供给 Xcode 的标志。

> bin/llvm-config --cxxflags --ldflags --system-libs --libs core 

-I/Users/rob/Foo/llvm-project/llvm/include 
-I/Users/rob/Foo/llvm-project/build/include 
-std=c++14 -fno-exceptions -fno-rtti 
-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS

-L/Users/rob/Foo/llvm-project/build/lib 
-Wl,-search_paths_first -Wl,-headerpad_max_install_names

-lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader 
-lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle

-lm -lz -lcurses -lxml2

我将这些-I路径放在HEADER_SEARCH_PATHS构建设置中,并将-L路径放在LIBRARY_SEARCH_PATHS中。 在 Xcode 中,这些值是路径列表,因此您添加的路径没有-I-L部分。 然后我将-l库 arguments 放在OTHER_LDFLAGS中,将-D arguments 放在OTHER_CPLUSPLUSFLAGS中。

之后,它从 Xcode 编译并运行。 我还没有将所有 output 从llvm-config转换为 Xcode 构建设置。 例如,我对这些什么都没做:

-std=c++14 -fno-exceptions -fno-rtti
-Wl,-search_paths_first -Wl,-headerpad_max_install_names

这是否会在以后引起问题仍有待观察。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM