从这个链接中,有一个变量LLVM_TARGETS_TO_BUILD
,定义如下:
一个分号分隔的列表,控制将构建和链接到llc中的目标。这相当于配置脚本中的--enable-targets
选项。默认列表定义为LLVM_ALL_TARGETS,并且可以设置为包括树外目标。默认值包括:AArch64、AMDGPU、ARM、BPF、Hexagon、Mips、MSP430、NVPTX、PowerPC、Sparc、SystemZ、X86、XCore。
您应该添加X86和ARM,同时支持64位和Apple。
从这个链接中:
可以进行交叉编译。
示例命令如下:
% cmake -G "Ninja" -DCMAKE_OSX_ARCHITECTURES="armv7;armv7s;arm64"
-DCMAKE_TOOLCHAIN_FILE=<PATH_TO_LLVM>/cmake/platforms/iOS.cmake
-DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_RUNTIME=Off -DLLVM_INCLUDE_TESTS=Off
-DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_ENABLE_BACKTRACES=Off [options]
<PATH_TO_LLVM>
我还想分享这个链接。它说:
基本选项是定义目标架构。为此,请使用-target。如果您不指定目标,则CPU名称将不匹配(因为Clang假定主机三元组),编译将继续进行,创建用于主机平台的代码,这将在汇编或链接时导致错误。
三元组的一般格式为<arch><sub>-<vendor>-<sys>-<abi>
,其中:
arch = x86_64, i386, arm, thumb, mips, etc.
sub = for ex. on ARM: v5, v6m, v7a, v7m, etc.
vendor = pc, apple, nvidia, ibm, etc.
sys = none, linux, win32, darwin, cuda, etc.
abi = eabi, gnu, android, macho, elf, etc.