llvm中Hello pass的makefile面临问题

llvm中Hello pass的makefile面临问题,makefile,llvm,Makefile,Llvm,我是llvm新手,正在尝试为llvm写一个通行证你好 通过以下链接,我在linux机器上下载并构建了llvm 我试着按照链接写一个通行证 我已将链接中指定的makefile复制到llvm中的Hello文件夹,并尝试执行make。但是我遇到了下面的错误。 Makefile:14:../../../Makefile.common:没有这样的文件或目录 make:**没有规则使目标“../../../Makefile.common”。停下来 我知道它无法找到Makefile.common。但是llvm

我是llvm新手,正在尝试为llvm写一个通行证你好 通过以下链接,我在linux机器上下载并构建了llvm

我试着按照链接写一个通行证

我已将链接中指定的makefile复制到llvm中的Hello文件夹,并尝试执行make。但是我遇到了下面的错误。 Makefile:14:../../../Makefile.common:没有这样的文件或目录 make:**没有规则使目标“../../../Makefile.common”。停下来

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

有人能帮我解决这个问题吗?我是否遗漏了什么,我是否遵循了正确的方法

有没有更好的教程可以参考?
TIA在llvm.3.9.0-src下有一个Makefile.common,即您的llvm源根目录。所以这不应该是你的问题


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

LLVM现在使用CMake构建,因此旧的Makefile将无法工作。您链接的同一教程指出了如何使用

树外构建 设置如下目录结构:

HelloPassProject
├── build
├── CMakeLists.txt
└── HelloPass
    ├── CMakeLists.txt
    └── HelloPass.cpp
因此有一个顶级的
HelloPass项目
,其中包含根
CMakeLists.txt
,一个
build
目录,我们将在其中构建我们的pass,还有一个
HelloPass
目录,其中包含实际的pass源和pass
CMakeLists.txt

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)
HelloPassProject/HelloPass/CMakeLists.txt的内容(在此处列出您的来源):

要根据已安装的LLVM生成,请执行以下操作:

cd HelloPassProject/build
cmake ..
make
要根据从源代码构建的LLVM进行构建(假设它是在
~/LLVM project/build
中构建的),请执行以下操作:

树形结构
您只需要树外构建中的
HelloPass
子目录。将其复制到
/lib/Transform
中。在
/lib/Transform/CMakeLists.txt
中添加一行
Add_子目录(HelloPass)
。像往常一样构建LLVM。

感谢您的回复Andrea,我已尝试通过编辑中的CMakeLists.txt文件以及包含以下错误消息(minksy)%sudo cmake../cmake error at CMakeLists.txt:13(add_LLVM_loadable_module):未知的cmake命令“add_LLVM_loadable_module”。我已经将这些行包括在CMakeLists.txt列表中(附加CMAKE_模块_路径“${LLVM_CMAKE_DIR}”)包括(AddLLVM)我可以知道我可能错在哪里吗谢谢详细的回答!这比llvm指南要好得多。具体来说,帮助我的是从源代码构建llvm时的前缀路径。
cd HelloPassProject/build
cmake ..
make
cd HelloPassProject/build
cmake -DCMAKE_PREFIX_PATH=~/llvm-project/build ..
make