Cmake的详细配置可以参考:CMake Option
这里我们给出比较常用的配置和变量,如下:
CMAKE_BUILD_TYPE(类型STRING)
配置make或者ninja编译的优化级别,可选的值有:Release Debug RelWithDebInfo MinSizeRel
Release : 有编译优化,无调试信息,没有Assertion,适合LLVM和Clang用户;
Debug:没有编译优化,有调试信息,有Assertion,适合LLVM开发者;
RelWithDebInfo:有编译优化,有调试信息,没有Assertion,适合需要debug的用户;
MinSizeRel:大小优化优先,没有调试信息,没有Assertion,适合对存储空间有要求的用户。
优化可以使得LLVM/Clang跑得更快,但会成为单步调试的障碍;
带有debug信息的编译会消耗很多内存和硬盘空间,通常跑起来会变慢,可以通过lld来提高内存的使用,可以参考LLVM_USE_LINKER选项。
Assertions是一些内部的检测来帮助发现bug,使能的情况下会使得LLVM和Clang变慢,但在开发过程中很有用。可以通过设置LLVM_ENABLE_ASSERTIONS来覆盖默认值。
CMAKE_INSTALL_PREFIX:PATH
LLVM安装的路径。
CMAKE{C,CXX}_FLAGS:STRING
额外编译C/C++源文件的FLAGS。
CMAKE_{C,CXX}_COMPILER:STRING
具体使用的C和C++编译器,注意如果安装了多个编译器,CMake不一定是用的默认的那一个。
LLVM_ENABLE_PROJECTS:STRING
控制启用哪些项目,例如,希望使用clang或lldb,可以指定-DLLVM _ ENABLE _ PROJECTS = " clang;lldb“。
LLVM_ENABLE_RUNTIMES:STRING
控制启用哪些runtimes,例如,如果想处理libc++或libc++abi,通过指定-DLLVM _ ENABLE _ RUNTIMES = " libcxx;libcxxabi”。
LLVM_LIBDIR_SUFFIX:STRING
附加到要安装库目录的额外后缀,在64位架构上,可以使用-DLLVM_LIBDIR_SUFFIX=64将库安装到/usr/lib64。
LLVM _ PARALLEL _ {COMPILE,LINK}_JOBS:STRING
构建llvm工具链会使用大量资源,尤其是链接,当使用Ninja生成器时(实测需要8GB以上内存),这些选项允许限制并行度。例如,为了避免OOMs或进入内存交换,在32GB的机器上,每15GB的可用RAM只允许一个链接job,可以指定-G Ninja-DLLVM _ PARALLEL _ LINK _ JOBS = 2。 LLVM_TARGETS_TO_BUILD:STRING
控制启用哪些target,例如,可能只需要启用本机target,-DLLVM_TARGETS_TO_BUILD=X86。
LLVM_USE_LINKER:STRING
覆盖系统的默认链接器。例如,使用我们生成的lld,那么设置-DLLVM_USE_LINKER=lld。
先说到这里,其实还有很多。。。