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

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

第一步,下源码:

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

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

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

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

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

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

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

07af10915f6054bf20382c855ed2ed1e.png

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

当提示选择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缓存,再编译应该就成功了。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值