我是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
答案 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变量。