win10下,源码编译Clang/llvm.并在vscode用cmake管理项目

走了很多弯路。网上的资料不少都过期了,我今天(2018.11.11)搞了一天,终于成功的再vscode中只按下鼠标就编译出了一个llvm项目html

 

第一步,下源码:c++

遵循https://clang.llvm.org/get_started.html的步骤下载源码,我只下了必须的llvm和clang.编程

llvm官方推荐用ninja编译,但我不信邪,用了vs2017编译,结果惨不忍睹,编程过程当中遇到的错误很是多,不可能很快解决的。因而老老实实的用ninja。缓存

ninja只是一个壳,内部也是用vc2017的工具链。因此vc2017先装好。社区版就能够。msbuild,window 10 kit。都要装好。按照官方指导,能够顺便编译clang和llvm.工具

编译完后,输出bin目录有30G,因此硬盘要有充足空间。ui

第二步。把编译好bin目录加入系统PATH。spa

第三步,使用vscode和vscode-cmake tools。命令行

vscode装的扩展。c/c++(微软出的那个)和 cmake-tools(vector-of-bool是做者)code

第四步:进入llvm中示例目录:llvm\examples\HowToUseJIT。右键打卡vscode.。CMake-tools 会自动配置项目。component

当提示选择kit时,不要选vs2017,vs2015,gcc等。选择clang8.0 for msvc(截至到2018,11.11,8.0是最新版)。若是没有这个套件,则选最下面的unspcail.而后按ctrl+shit+p,输入cmake 选择 "scan kits"命令,让cmake-tools扩展,从新扫描本机工具链。

若是path设定好,那么clang应该就出现了。我再这里花了好长时间,CMake-tools我早就装好了,把bin加入path没找到kit,也不知道cmake scan kits命令。我都是在命令行,手动输入clang 加一连串的参数的。后来去看cmake-tools的官方,才知道的这个命令。

第五步:把原来的CMakeLists.txt删除或更名。新建一个CMakeLists.txt.输入如下内容:(网上的资料,大多都过期了或者有错误,下面这个能够成功编译)

 

cmake_minimum_required(VERSION 3.4.3) project(llvm_test) set(LLVM_TARGETS_TO_BUILD "x64") set(LLVM_BUILD_RUNTIME OFF) set(LLVM_BUILD_TOOLS OFF) find_package(LLVM REQUIRED CONFIG) message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") SET (CMAKE_CXX_COMPILER_ENV_VAR "clang++") SET (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") SET (CMAKE_CXX_FLAGS_RELEASE "-O4 -DNDEBUG") SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) include_directories(${LLVM_INCLUDE_DIRS}) add_definitions(${LLVM_DEFINITIONS}) file(GLOB_RECURSE source_files "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") add_executable(llvm_test HowToUseJIT.cpp) # Find the libraries that correspond to the LLVM components # that we wish to use llvm_map_components_to_libnames(llvm_libs Core ExecutionEngine Interpreter MC Support nativecodegen irreader ) # Link against LLVM libraries target_link_libraries(llvm_test ${llvm_libs})

而后按状态栏的build all就能够了。若是失败。按 ctrl+shit+p输入"CMake clean" 或"CMake delete cache  build settings and reconfigure",清空一下cmake缓存,再编译应该就成功了。 

 

最后,能够发挥你的想象力,尽情的发明一个新语言吧

相关文章
相关标签/搜索