当前位置: 首页 > news >正文

虚拟机macos中构建llvm、clang并配置Xcode

安装虚拟机+macos,并安装brew:

  • 安装vmware:https://www.bilibili.com/video/BV1Wo4y1E7fc/
  • 安装最新版的macos:极限苹果-Mac论坛-提供Mac软件和macOS苹果系统镜像下载
  • 下载并安装brew:版本要低,我装的是4.3.5(Release 4.3.5 · Homebrew/brew · GitHub),不然怎么装都失败.
  • 安装cmake:brew install cmake
  • 安装llvm:brew install llvm
  • 安装llvm:brew install ninja (ninja比cmake在构建llvm的时候效率高很多,建议安装)

或者参照后续手动下载源码并构建、安装llvm和clang:

  • 下载llvm-project-18.1.8.src压缩包:Download LLVM releases
  • 解压至llvm-project
  • 进入llvm-project:cd llvm-project
  • 新建文件夹mybuilder:mkdir build
  • 进入mybuilder:cd build
  • 执行指令:(来源:Clang - Getting Started和Getting Started with the LLVM System — LLVM 20.0.0git documentation和Building - 🐛 LLDB)
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='clang;lldb' -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind' ../llvm
  • 构建llvm:
ninja
  • 安装llvm和clang:
sudo ninja install
  • 验证安装是否成功:
llvm-config --cxxflags --ldflags --system-libs --libs core

配置Xcode:

新建一个CLT项目

点击项目进入配置界面,在配置前,先执行下面指令来获取配置信息:

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

输出结果:

然后,在TARGETS的Build Settings下,搜索library search,双击Library Search Path后面的空白处,点击+,复制上述输出结果中-L开头的:/usr/local/lib

然后,搜索header search,双击Header Search Path后面的空白处,点击+,复制上述输出结果中-I开头的:/usr/local/include

然后,搜索other linker flags,双击Other Linker Flags后面的空白处,点击+,复制上述输出结果中-l开头的的:-lLLVMWindowsManifest -lLLVMXRay ...... -lLLVMDemangle -lm -lz -lcurses -lxml2

点击+,继续添加llvm-project/clang/include/clang中的文件夹下的文件夹名,按照如下格式:-lclangAnalysis -lclangAPINotes ... -lclangTooling (如果编译时报错显示某一个找不到,比如-lclangConfig和-lclangCorssTU,那就删掉对应的即可)

然后,你就可以在main.cpp中添加下述内容并成功运行了:

#include "llvm/ADT/StringRef.h"
#include "clang/Basic/Diagnostic.h"

如何使用cmake编译和构建项目

  • 开始编译你的项目:
step1: mkdir buildstep2: cd buildstep3: cmake ../project_namestep4: make 或者 cmake --build .step5(不一定必要):make -install

补充:如何独立构建llvm和clang

参照Getting Started with the LLVM System — LLVM 20.0.0git documentation执行操作:

cd llvm-projectcmake -G Ninja -S llvm -B llvm_build \-DLLVM_INSTALL_UTILS=ON \-DCMAKE_INSTALL_PREFIX='Users/username/Desktop/llvm_install'ninja -C llvm_build installcmake -G Ninja -S clang \-B clang_build \-DLLVM_EXTERNAL_LIT=llvm_build/utils/lit \-DLLVM_ROOT=../llvm_installninja -C clang_build# 说明:如果加引号就写绝对路径,如果不加引号就写相对路径

http://www.lryc.cn/news/423832.html

相关文章:

  • Java 中的 @SneakyThrows 注解详解:简化异常处理的利与弊
  • 系统编程 day11 进程(线程)3
  • [ Python 原理分析 ]如何实现用户实现博客文章点赞-物联网Python
  • 【47 Pandas+Pyecharts | 杭州二手房数据分析可视化】
  • C++入门基础知识13
  • IP地址证如何实现HTTPS访问?(内网IP、公网IP)
  • 东土科技车规级网络芯片获批量应用
  • nvidia系列教程-AGX-Orin pcie扩展M.2磁盘调试笔记
  • haproxy七层代理知识点以及各种配置
  • uniapp自定义浮动图标、列表布局
  • 学习嵌入式入门(十)高级定时器简介及实验(下)
  • 使用python在不改变原有excel的格式下,修改指定单元格格式
  • MySQL数据库:详细安装与配置指南
  • python爬虫代理IP实战
  • 样式,常用组件
  • Django Project | 云笔记练习项目
  • Zookeeper的监听机制
  • Swift withAnimation 动画完成监听
  • 场外期权交易:找到适合你的那一款
  • Elasticsearch-使用java 批量插入文档
  • 【区块链+食品安全】农业产业全过程溯源云平台 | FISCO BCOS应用案例
  • 每日面试题Day2
  • 基于MyBatis-plus的SpringBoot开发
  • 网站数据导出为excel 源码大全java php c# js python 与网络安全兼顾-阿雪技术观
  • Python知识点21---怎么把你的Python项目打包成一个完整的结果物给别人提供
  • 关于#genesiscsheel#的问题,如何解决?
  • 无人机之如何避免飞行错误篇
  • 免费简单的制作3D卡通建模——Fuse软件和Readyplayer的使用介绍
  • 企业大模型业务架构技术选型分析
  • pyqt5 中python如何通过Qtwebchannel主动发消息给web前端