面对llvm中Hello传递的makefile问题

时间:2016-09-23 16:05:19

标签: makefile llvm

我是llvm的新手,正在尝试为llvm Hello写一个传递 我已经通过链接http://llvm.org/docs/GettingStarted.html

在linux机器上下载并构建了llvm

我已尝试按照http://llvm.org/docs/WritingAnLLVMPass.html

链接编写通行证

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

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

任何人都可以帮我解决这个问题吗?我错过了什么,我是否遵循了正确的方法?

有没有人可以参考的更好的教程? TIA

2 个答案:

答案 0 :(得分:2)

LLVM现在使用CMake构建,因此旧的Makefile无法正常工作。您链接的相同教程指出如何write the CMakeLists.txt

树外构建

设置如下目录结构:

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

所以有一个顶级HelloPassProject,其中包含根CMakeLists.txt,一个build目录,我们将在其中构建我们的传递和{{1}包含实际传递源和传递HelloPass的目录。

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进行构建:

add_llvm_loadable_module(LLVMHelloPass HelloPass.cpp)

建立一个你从源代码构建的LLVM(让我们说它已经在cd HelloPassProject/build cmake .. make 中构建):

~/llvm-project/build

树内构建

您只需要从树外构建中获取cd HelloPassProject/build cmake -DCMAKE_PREFIX_PATH=~/llvm-project/build .. make 子目录。复制HelloPass内的内容。向<LLVM root>/lib/Transform添加add_subdirectory(HelloPass)行。像往常一样构建LLVM。

答案 1 :(得分:0)

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

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