Xcode里已经集成了llvm。为什么我看llvm的文章时要重新下载llvm并重新make呢?

看了@Alone_Monkey的文章《关于LLVM,这些东西你必须知道!》时。第一步要重新自己下载llvm+clang+compiler_rt,这些不都在xcode里集成了吗?

还有在cmake的时候出现了很多fail:could not find ocaml. 等。但是貌似不影响后续的make,这样有影响吗?

微信群里已经解答过了。
如果有人好奇的话这边重新写一下。

  • 一般我们用的pass都是为了方便静态连接的。不太确定Apple的那个版本支不支持动态加载pass,另外为了一个版本的llvm编译的pass用其他的加载似乎会某些符号无法解析
  • Apple的fork里缺少了大量至关重要的组件。比如最常用的llvm-dis opt lli
    (如果有人好奇的话。完整的llvm编译至少有如下命令行工具:)
FileCheck             llvm-as               llvm-opt-report
arcmt-test            llvm-bcanalyzer       llvm-pdbutil
bugpoint              llvm-c-test           llvm-profdata
c-arcmt-test          llvm-cat              llvm-ranlib
c-index-test          llvm-config           llvm-readobj
clang                 llvm-cov              llvm-rtdyld
clang++               llvm-cvtres           llvm-size
clang-5.0             llvm-cxxdump          llvm-split
clang-check           llvm-cxxfilt          llvm-stress
clang-cl              llvm-diff             llvm-strings
clang-cpp             llvm-dis              llvm-symbolizer
clang-format          llvm-dsymutil         llvm-tblgen
clang-import-test     llvm-dwarfdump        llvm-xray
clang-offload-bundler llvm-dwp              not
clang-rename          llvm-extract          obj2yaml
clang-tblgen          llvm-go               opt
count                 llvm-lib              sancov
diagtool              llvm-link             sanstats
ld.lld                llvm-lit              scan-build
llc                   llvm-lto              scan-view
lld                   llvm-lto2             set-xcode-analyzer
lld-link              llvm-mc               verify-uselistorder
lli                   llvm-mcmarkup         yaml-bench
lli-child-target      llvm-modextract       yaml2obj
llvm-PerfectShuffle   llvm-nm
llvm-ar               llvm-objdump

这些就足够成为单独编译一份的理由了

张总,那个我用unix makefiles cmake的也生成了上述的so文件。并在make install后在/usr/local/bin和/usr/local/include下也有相应的头文件和so文件。在这种情况下还有必要再重新用 Ninja编译吗?

cmake -G Ninja …/
-DCMAKE_INSTALL_PREFIX=/opt/llvm
-DCMAKE_BUILD_TYPE=Release
-DLLVM_ENABLE_FFI=ON
-DLLVM_BUILD_LLVM_DYLIB=ON
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DLLVM_TARGETS_TO_BUILD=“host;AMDGPU”
-Wno-dev

这是我看的某个用Ninja编译的例子

不用。只是个编译系统,编译出来的东西是一样的。只不过我个人和大多数LLVM开发者习惯Ninja而已