提问者:小点点

llvm中Hello pass的makefile面临问题


我是llvm的新手,正在尝试为llvm编写通行证您好,我已经通过以下链接在linux机器中下载并构建了llvm http://llvm.org/docs/GettingStarted.html

我试图通过以下链接写一篇文章http://llvm.org/docs/WritingAnLLVMPass.html

我已经复制了链接中指定的Makefile到llvm编译器中的Hello文件夹,并试图执行制作。但是我遇到了以下错误。Makefile: 14:…/…/…/Makefile.common:没有这样的文件或目录制作:***没有规则使目标'…/…/…/Makefile.common'。停止。

我知道它找不到Makefile.common,但是llvm中的大部分内容都是只读的,并且是从svn库中下载的。

有人能帮助我解决这个问题吗?我错过了什么吗,我遵循了正确的方法吗?

有没有什么比较好的教程大家可以参考一下?短暂性缺血性发作


共2个答案

匿名用户

LLVM现在使用CMake构建,所以旧的Makefile无法工作。您链接的同一教程指出了如何编写CMakeLists.txt。

设置如下目录结构:

HelloPassProject
├── build
├── CMakeLists.txt
└── HelloPass
    ├── CMakeLists.txt
    └── HelloPass.cpp

所以有一个顶级的<code>HelloPassProject</code>,它包含根<code>CMakeList。txt,一个build目录,我们将在其中构建pass,以及一个包含实际pass源和passCMakeLists.txtHelloPass目录。

HelloPassProject/CMakeLists.txt的内容:

find_package(LLVM REQUIRED CONFIG)

list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
include(AddLLVM)

add_definitions(${LLVM_DEFINITIONS})
include_directories(${LLVM_INCLUDE_DIRS})

add_subdirectory(HelloPass)

< code > hello pass project/hello pass/cmakelists . txt 的内容(在此列出您的来源):

add_llvm_loadable_module(LLVMHelloPass HelloPass.cpp)

要针对已安装的LLVM构建:

cd HelloPassProject/build
cmake ..
make

要针对您从源代码构建的 LLVM 进行构建(假设它是在 ~/llvm-project/build 中构建的):

cd HelloPassProject/build
cmake -DCMAKE_PREFIX_PATH=~/llvm-project/build ..
make

您只需要树外构建中的HelloPass子目录。将其复制到

匿名用户

llvm.3.9.0-src下有一个Makefile.common,也就是你的llvm源根目录。所以这不是你的问题。

请注意,在 Makefile.common 中有一些 make 变量需要设置。