Skip to content

SMake LLVM 首页

Yu Chen edited this page Jun 22, 2021 · 4 revisions

SMake LLVM 工作流程

  1. 根据配置生成 Ninjabuild 文件。
  2. 使用 Ninja 编译目标。

功能

  • macOS 下编译 C/C++ 至 macOS 可执行文件,静态库,动态库,Nodejs C++ 插件
  • macOS 下编译 C/C++ 至 Linux 可执行文件,静态库,动态库,Nodejs C++ 插件
  • macOS 下编译 C/C++ 至 Windows 可执行文件,静态库,动态库,Nodejs C++ 插件
  • Windows 下编译 C/C++ 至 macOS 可执行文件,静态库,动态库,Nodejs C++ 插件
  • Windows 下编译 C/C++ 至 Linux 可执行文件,静态库,动态库,Nodejs C++ 插件
  • Windows 下编译 C/C++ 至 Windows 可执行文件,静态库,动态库,Nodejs C++ 插件

安装依赖

设置

所有路径在 Windows 下请使用 / 代替 \ 。如:C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910

# LLVM 可执行文件目录前缀。
# 如果已在 PATH 中可以不设置。
export SMAKE_LLVM_PREFIX="/opt/homebrew/opt/llvm/bin/"

# Clang 目录
# 仅在 useClangHeaders = true 时需要
export SMAKE_LLVM_CLANG_PATH="/opt/homebrew/opt/llvm/lib/clang/11.1.0"

Windows SDK 设置

# _MVC_VER 版本号
export SMAKE_LLVM_MSVC_VERSION=1928
# Windows Kits 10 版本号
export SMAKE_LLVM_WINDOWS_KITS_10_VERSION=10.0.19041.0

# MSVC 目录
export SMAKE_LLVM_MSVC_PATH="/opt/sysroots/win32/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910"
# Windows Kits 10 目录
export SMAKE_LLVM_WINDOWS_KITS_10_PATH="/opt/sysroots/win32/Program Files (x86)/Windows Kits/10"

Linux SDK 设置

# 规则为设置 SMAKE_LLVM_SYSROOT_${编译目标大写} 至 sysroot 目录
# aarch64-linux-gnu
export SMAKE_LLVM_SYSROOT_AARCH64_LINUX_GNU=/opt/sysroots/ubuntu14.04-aarch64-linux-gnu
# x86_64-linux-gnu
export SMAKE_LLVM_SYSROOT_X86_64_LINUX_GNU=/opt/sysroots/ubuntu14.04-x86_64-linux-gnu
# arm-linux-gnueabihf
export SMAKE_LLVM_SYSROOT_ARM_LINUX_GNUEABIHF=/opt/sysroots/ubuntu14.04-arm-linux-gnueabihf

Nodejs 下载镜像设置(官方下载太慢)(可选)

# 使用淘宝镜像
export NVM_NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/node

获取 Windows SDK

在 Windows 10 下安装 Visual Studio (建议 2019)。安装时勾上 C++ 本地开发。安装完成后以下两个目录就是所需要的 SDK

  • C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910(版本数字可能与这个不同)
  • C:/Program Files (x86)/Windows Kits/10

获取 Linux SDK

这里以 Ubuntu 为例。在 Docker 中启动一个 Ubuntu 容器实例。安装 build-essential。创建一个目录,例:sysroot。使用 cp -RL 拷贝以下目录至 sysroot

  • /lib
  • /lib64(如果没有就忽略) 在 sysroot 下创建目录 usr,拷贝以下目录至 usr
  • /usr/include
  • /usr/lib 完成后这个 sysroot 就是所需要的 SDK。把 sysroot 移出容器便可在 MacOSWindows 下使用。
Clone this wiki locally