内容简介:这里主要讨论使用clion写工程时使用llvm需要注意的东西。如果想在代码中使用设置环境变量
这里主要讨论使用clion写工程时使用llvm需要注意的东西。
编译llvm
如果想在代码中使用 llvm
,需要下载源码手动编译。方法是下载 llvm
的源代码,放到任何位置,然后在 llvm
的根目录下执行如下操作:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. make
设置环境变量 $LLVM_DIR
:
export LLVM_DIR=/Users/seviezhou/llvm/build
头文件引用
为了能够正确的引用 llvm
的头文件,需要在 CMakeLists.txt
中添加:
cmake_minimum_required(VERSION 3.6)
project(kaleidoscope)
set(CMAKE_CXX_STANDARD 11)
# 使用llvm来设置路径
find_package(LLVM REQUIRED CONFIG)
# 打印信息
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
set(SOURCE_FILES top.cpp)
# 添加头文件包含路径
include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})
add_executable(kaleidoscope ${SOURCE_FILES})
如果在 clion
中, log
会输出:
/Applications/CLion.app/Contents/bin/cmake/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /Users/seviezhou/CLionProjects/kaleidoscope -- include path: /Users/seviezhou/llvm/include;/Users/seviezhou/llvm/build/include -- Configuring done -- Generating done -- Build files have been written to: /Users/seviezhou/CLionProjects/kaleidoscope/cmake-build-debug
这时就能正确的包含 llvm
的所有头文件了。
使用llvm库
接下来如果使用了 llvm
库的代码,还需要在链接时加上库文件一起编译,否则有可能报如下的错误:
Undefined symbols for architecture x86_64
在 CMakeLists.txt
中需要添加用到的库,完整的 CMakeLists.txt
如下:
cmake_minimum_required(VERSION 3.6)
project(kaleidoscope)
set(CMAKE_CXX_STANDARD 11)
# 定义需要的库
set(LLVM_LINK_COMPONENTS
Core
Support
)
# 使用llvm
find_package(LLVM REQUIRED CONFIG)
set(SOURCE_FILES top.cpp)
# 添加头文件路径
message(STATUS "include path: ${LLVM_INCLUDE_DIRS}")
include_directories(${LLVM_INCLUDE_DIRS})
add_executable(kaleidoscope ${SOURCE_FILES})
# 寻找对应的库
llvm_map_components_to_libnames(llvm_libs ${LLVM_LINK_COMPONENTS})
# 将库与目标代码一起链接
target_link_libraries(kaleidoscope ${llvm_libs})
也可以直接包含所有的库:
set(LLVM_LINK_COMPONENTS all )
rtti
rtti
是 run-time type information
,在使用 C++
的多态特性时需要 rtti
的支持,如果编译时报如下错误说明链接时少了支持 rtti
的参数:
Undefined symbols for architecture x86_64: "typeinfo for llvm::raw_ostream", referenced from:
在 CMakeLists.txt
中加一句话:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
就可以正确的编译链接。
以上所述就是小编给大家介绍的《使用cmake和llvm》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- RecyclerView使用指南(一)—— 基本使用
- 如何使用Meteorjs使用URL参数
- 使用 defer 还是不使用 defer?
- 使用 Typescript 加强 Vuex 使用体验
- [译] 何时使用 Rust?何时使用 Go?
- UDP协议的正确使用场合(谨慎使用)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python基础教程
[挪] Magnus Lie Hetland / 袁国忠 / 人民邮电出版 / 2018-2-1 / CNY 99.00
本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器;此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识;最后,作者结合......一起来看看 《Python基础教程》 这本书的介绍吧!