首页 > 编程语言 >C++:如何将 LLVM 嵌套到你的项目中去

C++:如何将 LLVM 嵌套到你的项目中去

时间:2023-12-04 18:55:37浏览次数:36  
标签:std LLVM -- C++ 嵌套 llvm libs my

  • IDE: Clion
  • LLVM
cmake_minimum_required(VERSION 3.9)  
project(clang_demo)  
  
find_package(LLVM REQUIRED CONFIG)  
  
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")  
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")  
  
set(CMAKE_CXX_STANDARD 17)  
  
# Set your project compile flags.  
# E.g. if using the C++ header files  
# you will need to enable C++11 support  
# for your compiler.  
  
include_directories(${LLVM_INCLUDE_DIRS})  
add_definitions(${LLVM_DEFINITIONS})  
  
add_executable(clang_demo main.cpp)  
# Find the libraries that correspond to the LLVM components  
# that we wish to use  
llvm_map_components_to_libnames(llvm_libs support core irreader)  
  
# Link against LLVM libraries  
target_link_libraries(clang_demo ${llvm_libs})
// main.cpp
#include "llvm/IR/LLVMContext.h"  
#include "llvm/IR/Module.h"  
  
using namespace llvm;  
  
static std::unique_ptr<LLVMContext> my_Context;  
static std::unique_ptr<Module> my_Module;  
  
static void InitializeModule() {  
    my_Context = std::make_unique<LLVMContext>();  
    my_Module = std::make_unique<Module>("Hello Modlue", *my_Context);  
}  
  
int main(int argc, char *argv[]) {  
    InitializeModule();  
    my_Module->print(outs(), nullptr);  
  
    return 0;  
}

不使用 cmake 构建项目,可执行以下命令

clang++ -g mai.cpp `llvm-config --cxxflags --ldflags --system-libs --libs core` -o hello_world

获取 LLVM 配置信息

llvm-config --cxxflags --ldflags --system-libs --libs core

标签:std,LLVM,--,C++,嵌套,llvm,libs,my
From: https://www.cnblogs.com/RioTian/p/17875696.html

相关文章

  • C++_线程池代码看C++类-模板-标准库
    C++线程池线程池的组成部分:线程池管理器(ThreadPoolManager):用于创建并管理线程池工作线程(WorkThread):线程池中线程任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。任务队列:用于存放没有处理的任务。提供一种缓冲机制。 通过新......
  • 一. C++基础
    文章参考:《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客1.一个简单的案例#include<iostream>//编译预处理命令usingnamespacestd;//使用命名空间intadd(inta,intb);//函数原型说明intmain()//主函数{ intx,y;......
  • 2021 最佳 C++ IDE 排行
    2021最佳C++IDE排行 BlogAuthor:DoriExtermanPublishedOn:5月31,2021Estimatedreadingtime:1minutes想把所有优秀的 IDE(集成开发环境)或类似 IDE 的工具在一篇文章内梳理出来,比登天还难。不过,JetBrains的调查数据显示,75% 的受访者经常使用 IDE。这些工具推......
  • 最佳 C++ 编译器
    最佳C++编译器Incredibuild​已认证账号​关注 134人赞同了该文章 C++是一个“开放”的编程语言,任何人都可以使用自己喜欢的编译器。当然,C++编译器的种类也很多。同样, C++IDE 也不少,我在之前的一个博客中讨论过这个话题。编译和运行C++......
  • C++ 内联函数 inline
    宏定义实现和普通函数实现:-宏定义是直接在实现的时候进行代码替换,可能产生结果异常问题。-普通函数实现:调用函数进出函数体的时候时间开销可能过大。1#include<iostream>2usingnamespacestd;3//宏实现4#defineGETMAX(a,b)((a)>(b)?(a):(b))......
  • c++ friend关键字 友元
     在C++中,friend关键字用于声明友元函数或友元类1。友元函数或友元类可以访问当前类的私有成员和保护成员,即使它们不是当前类的成员函数或成员类1。友元函数是一个独立的函数,而友元类是一个类可以访问另一个类的私有成员和保护成员1。例如,如果要声明函数为一个类的友元,需要......
  • C++U5-08-二叉树1
    上节课作业分析讲解视频链接:https://pan.baidu.com/s/1_jaM_TlZmLJX4JbLuJtKzA?pwd=2us4提取码:2us4学习目标  树在C++中,二叉树是一种常用的数据结构,由节点(Node)组成,每个节点可以有最多两个子节点。二叉树具有以下几个主要的作用:存储和组织数据:二叉树可用于存储和组织大......
  • C++/Filesystem 文件类型
    #include<iostream>#include<filesystem>#include<string>namespacefs=std::filesystem;voiddemo_status(constfs::path&p,fs::file_statuss){std::cout<<p;switch(s.type()){casefs::file_type::none:......
  • C++U3-第3课-结构体
    上节课作业:链接:https://pan.baidu.com/s/1fBx8bS-J_FPDqBzn6Omp-g?pwd=1rn5提取码:1rn5学习目标在C++中,结构体(Struct)是一种用于组合多个相关数据项的自定义数据类型。结构体可以包含不同类型的成员变量和成员函数,并且可以通过.运算符来访问和操作它们。结构体在C++中具有以下......
  • 无涯教程-Erlang - 嵌套if函数
    有时,需要相互之间嵌入多个if语句,这在其他编程语言中也是可能的。在Erlang中,这也是可能的。Nestedif-示例-module(helloLearnfk).-export([start/0]).start()->A=4,B=6,ifA<B->ifA>5->io:fw......