使用 CCMAKE 将 Clang 设置为自己的编译器后 ninja 出错
Posted
技术标签:
【中文标题】使用 CCMAKE 将 Clang 设置为自己的编译器后 ninja 出错【英文标题】:Error with ninja after setting Clang as its own compiler with CCMAKE 【发布时间】:2015-01-28 20:21:22 【问题描述】:我一直按照http://clang.llvm.org/docs/LibASTMatchersTutorial.html 上的说明使用 ninja 设置 Clang。
一切顺利,直到我按照网页上的说明使用 ccmake ../llvm
将 Clang 设置为自己的编译器(我将 CMAKE_CXX_COMPILER
设置为我最近在 $TARGETFOLDER/clang-llvm/build/bin/clang++
中编译的 clang++ 二进制文件)。
之后,当我输入ninja
时,显示如下错误:
$ ccmake ../llvm/
$ ninja
[50/2561] Building C object lib/Support/CMakeFiles/LLVMSupport.dir/ConvertUTF.c.o
FAILED: /usr/bin/cc -DGTEST_HAS_RTTI=0 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fPIC -Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers -pedantic -Wno-long-long -Wno-comment -fcolor-diagnostics -ffunction-sections -fdata-sections -Ilib/Support -I$TARGETFOLDER/clang-llvm/llvm/lib/Support -Iinclude -I$TARGETFOLDER/clang-llvm/llvm/include -MMD -MT lib/Support/CMakeFiles/LLVMSupport.dir/ConvertUTF.c.o -MF "lib/Support/CMakeFiles/LLVMSupport.dir/ConvertUTF.c.o.d" -o lib/Support/CMakeFiles/LLVMSupport.dir/ConvertUTF.c.o -c $TARGETFOLDER/clang-llvm/llvm/lib/Support/ConvertUTF.c
cc: error: unrecognized command line option ‘-fcolor-diagnostics’
[50/2561] Building CXX object lib/Support/CMakeFiles/LLVMSupport.dir/CommandLine.cpp.o
ninja: build stopped: subcommand failed.
我已经在两台装有 Ubuntu 13.10 和 Ubuntu 14.04 的机器上测试过,同样的错误出现了。
有什么想法吗?
【问题讨论】:
@CarlNorum 我认为 Clang 支持该选项(当 Ninja 吃光颜色时,它会强制进行颜色诊断)。 您是否仔细检查过 Clang++ 是 CMAKE_CXX_COMPILER 吗? 是的,我的评论毫无意义。正在删除。 OP:该日志说 /usr/bin/cc,而不是你提到的 clang 路径。 【参考方案1】:正如 Hongxu Chen 所指出的以及本文http://clang-developers.42468.n3.nabble.com/Compilation-issues-Ubuntu-14-10-td4042443.html 中提到的,您还需要将 CMAKE_C_COMPILER 设置为最近构建的 clang(文档中未提及)。
Clang 现在与 ninja 一起工作。
【讨论】:
以上是关于使用 CCMAKE 将 Clang 设置为自己的编译器后 ninja 出错的主要内容,如果未能解决你的问题,请参考以下文章