相关疑难解决方法(0)

使用 cmake 将 LLVM 添加到项目

我正在尝试将 LLVM 添加到 cmake 项目中,使用 cygwin 作为编译器。我从 cygwin 的安装程序下载了 LLVM(刚刚安装了所有与 llvm 相关的包)。文件在那里,但是我不能在我的项目中包含 LLVM。我尝试使用 3.5.2 的官方指南(它安装的版本),我的 CMakeLists.txt 看起来像

cmake_minimum_required(VERSION 3.2)
project(Lang)

find_package(LLVM REQUIRED CONFIG)

message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")


include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)

add_executable(Lang ${SOURCE_FILES})

llvm_map_components_to_libnames(llvm_libs support core irreader)

# Link against LLVM libraries
target_link_libraries(Lang ${llvm_libs})
Run Code Online (Sandbox Code Playgroud)

但是,我收到了一堆这样的错误

在此处输入图片说明

难道我做错了什么?我想要做的就是在我的项目中使用 LLVM。

c++ cmake llvm llvm-3.0 llvm-c++-api

5
推荐指数
2
解决办法
6851
查看次数

使用 llvm 库构建时如何链接?

我正在尝试解析 LLVM-IR 文件(.ll)并进行静态分析。

我在下面找到了这个示例代码,我尝试构建它,但我不知道要链接哪个库。

#include <iostream>
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/raw_ostream.h"

using namespace llvm;

int main(int argc, char** argv)
{
    if (argc < 2) {
        errs() << "Expected an argument - IR file name\n";
        exit(1);
    }

    LLVMContext &Context = getGlobalContext();
    SMDiagnostic Err;
    std::unique_ptr<Module> Mod = parseIRFile(argv[1], Err, Context);

    if (Mod) {
        std::cout << "Mod is not null" << std::endl;
    }
    else {
       std::cout << "Mod is null" << std::endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我给出了下面的命令来构建,它给了我一些未定义的参考错误,我认为这是一个链接错误。

g++ …
Run Code Online (Sandbox Code Playgroud)

compiler-construction static-analysis llvm llvm-clang llvm-ir

2
推荐指数
1
解决办法
1666
查看次数