ღ Miranda

使用cmake和llvm

这里主要讨论使用clion写工程时使用llvm需要注意的东西,还有我遇到的问题汇总。

编译llvm

如果想在代码中使用llvm,需要下载源码手动编译。方法是下载llvm的源代码,放到任何位置,然后在llvm的根目录下执行如下操作:

设置环境变量$LLVM_DIR:

头文件引用

为了能够正确的引用llvm的头文件,需要在CMakeLists.txt中添加:

如果在clion中,log会输出:

这时就能正确的包含llvm的所有头文件了。

使用llvm库

接下来如果使用了llvm库的代码,还需要在链接时加上库文件一起编译,否则有可能报如下的错误:

CMakeLists.txt中需要添加用到的库,完整的CMakeLists.txt如下:

也可以直接包含所有的库:

rtti

rttirun-time type information,在使用C++的多态特性时需要rtti的支持,如果编译时报如下错误说明链接时少了支持rtti的参数:

CMakeLists.txt中加一句话:

就可以正确的编译链接。

llvm-config

当没有llvm-config时,可能会报错:

llvm-config可以显示系统中的库:

需要手动加到编译参数中:

brace-enclosed initializer

linux上编译别的工程的时候可能会出现如下的错误:

这是因为编译器不支持llvm中的ArrayRef的一种构造方法:

这时只要声明一个数组,然后替换出错的地方就可以了:

库的链接顺序

有时候如果target_link_libraries的顺序不对,可能会造成如下的错误:

line_iterator是在libLLVMSupport中,改动后的顺序:

发表评论

电子邮件地址不会被公开。