2016-05-24 57 views
0

所以我正在學習llvm,並且我決定從我從LLVM site下載的tars構建3.8。LLVM3.8 Makefile.config,Makefile.common和Makefile.rule在構建文件夾中丟失

一切工作正常,我設法建立在一個單獨的生成文件夾中的來源。

(After downloading all the sources) 
$cd llvm3.8/build 
$cmake -G "Unix Makefiles" ../llvm 
$make -j 4 
$make install 

所以我的目錄看起來有點像這樣:

llvm3.8/ 
llvm3.8/build 
llvm3.8/llvm 

,同時學習如何編寫一個LLVM通我注意到,我的生成文件夾丟失這些文件:

  • Makefile文件。 config
  • Makefile.common
  • Makefile.rule

我在Makefile中使用了我爲我實現的pass所寫的內容。

我所知道的是,源代碼中有這些文件:

$cd llvm3.8/llvm 
$ls: 
CMakeLists.txt  README.txt  llvm.spec.in 
CODE_OWNERS.TXT  autoconf  projects 
CREDITS.TXT   bindings  resources 
LICENSE.TXT   cmake   test 
LLVMBuild.txt  configure  tools 
Makefile   docs   unittests 
Makefile.common  examples  utils 
Makefile.config.in include 
Makefile.rules  lib 

,而我的build文件夾沒有。

$ cd llvm3.8/build 
$ ls 
CMakeCache.txt   cmake     libexec 
CMakeFiles    cmake_install.cmake  projects 
CPackConfig.cmake  compile_commands.json share 
CPackSourceConfig.cmake docs     test 
DummyConfigureOutput examples    tools 
LLVMBuild.cmake   include     unittests 
Makefile    install_manifest.txt utils 
bin      lib 

我的生成文件夾是否包含它應該包含的內容? 也許通過必須寫在源llvm3.8/llvm

感謝您的幫助。

+0

我的答案是否解決了這個問題? – khrm

+0

可能您使用的過時教程仍然使用Makefiles,而它們最近都被丟棄了。 我可以推薦你看看這個演示文稿:[構建,測試和調試一個簡單的out-of-tree LLVM密碼](http:// llvm。org/devmtg/2016-03 /#tuto3) – AlexDenisov

回答

1

你想給你寫在LLVM通/ lib中/變換/ YourPassName

創建在建目錄:

mkdir -p llvm3.8/build/lib/Transforms/YourPassName 

我會建議你使用的cmake。由於autoconf將在llvm3.9中被棄用。對於它:

添加在LLVM/lib中/變換/的CMakeLists.txt

add_subdirectory(YourPassName) 

條目將進場後,在LLVM/lib中/變換/ YourPassName創建的CMakeLists.txt像其他LLVM通過。

現在使用

cmake ../llvm3.8 

從通目錄內:

make 

此外,如果你有安裝LLVM,並希望做獨立的,使用此答案給出的方法:https://stackoverflow.com/a/37308946/4946286

+0

只是爲了完成你的回答,因爲它幫助我理解了我的錯誤: 1)將你的**通過**添加到llvm/lib/Transforms/MyPass - > MyPass.cpp + CMakeList.txt 2)在llvm/lib/Transforms/CMakeList.txt中添加條目 - > add_subdirectory(MyPass) 3)從** build **文件夾的根目錄運行'make'。這將在build/lib/Transforms中創建一個名爲** MyPass **和LLVMMyPass.so lib的文件夾,然後您可以使用'opt -load build/lib/LLVMMyPass.so'加載**。 爲了清楚起見,在構建上運行make不會重新編譯所有內容,而只是添加了您的pass。 – Carlinho89