我正在尝试构建clang,但构建大小非常大。由于clang也支持非C系列语言(例如Java,Fortran),有没有办法在构建期间关闭它。我只想支持C和C ++而不关心其他语言。
是否需要设置CMake选项来执行此操作?
非常感谢!
最诚挚的问候, 尼蒂什
答案 0 :(得分:1)
正如其他人所评论的那样,clang只是一个C / C ++前端,而且没有Java / Fortran前端可以禁用。
但是,还有其他方法可以减少clang构建大小:
选择合适的构建配置
LLVM / clang的默认构建配置是Debug
。使用大量可执行文件构建Debug
(未指定构建配置)结果,构建文件夹可能需要> 20GB。这主要是由于调试信息。
如果您没有开发clang,并且不需要调试信息,则可以构建MinSizeRel
,这是针对大小进行了优化的发布版本。
调整构建设置
如果您计划调试clang或进行轻量级开发,另一个选项是使用最小的调试信息构建 - -gmlt
选项仅保留行调试信息,允许源步进,并且结果具有更紧凑的对象与完整调试信息(-g
)相比较的文件。
禁用构建组件
您可以禁用构建中的某些组件,例如测试和示例:
-DLLVM_INCLUDE_TESTS=Off -DLLVM_INCLUDE_EXAMPLES=Off
把它放在一起:
cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DLLVM_INCLUDE_TESTS=Off -DLLVM_INCLUDE_EXAMPLES=Off
对于紧凑的调试版本:
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-gmlt -DLLVM_INCLUDE_TESTS=Off -DLLVM_INCLUDE_EXAMPLES=Off
希望这有帮助!
答案 1 :(得分:0)
答案很简单:clang是C / C ++前端,它既不支持Java也不支持Fortran,因此没有这样的选项 - 没有什么可以关闭的。
答案 2 :(得分:0)
我不确定它会有多大帮助,但是您可以针对大小优化clang的编译。像其他人所说的那样禁用调试符号也有帮助。生成clang时,将CFLAGS="-Os" CXXFLAGS="-Os"
设置为环境变量。
这是来自GCC 4.8.5
-Os优化大小。 -Os启用所有通常不会增加代码大小的-O2优化。它还执行旨在减少代码大小的进一步优化。
-Os禁用以下优化标志:-falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks
-freorder-blocks和分区-fprefetch-loop-arrays -ftree-vect-loop-version