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緩存,再編譯應該就成功了。 

 

最後,能夠發揮你的想象力,盡情的發明一個新語言吧

相關文章
相關標籤/搜索