clang-cl

clang-cl 是一个Clang驱动器的另一个命令行接口的选择,被设计用来兼容Visual C++ 的编译器,cl.exe。

为了使clang-cl从命令行运行的时候能够找到系统头文件,库和连接器,它应当在一个Visual Studio 本地工具命令提示符或者设置了环境变量常规的命令提示符,例如vcvars32.bat

clang-cl 也可以在Visual Studio中使用,通过使用LLVM平台工具集。

命令行选项

为了兼容cl.exe,clang-cl 支持大多数相同的命令行选项。这些选项可以使用/或者-开始。它也支持一些Clang的核心选项,例如`-w`选项。

clang-cl识别的选项,但是目前还没有被支持的,会被忽略并显示一个警告。例如:

  1. clang-cl.exe: warning: argument unused during compilation: '/Zi'

可以使用-Qunused-arguments选项来关闭为使用的参数警告。

clang-cl不认识的选项将会引发错误。如果它们被冠以/,它们将会被误认为是一个文件名:

  1. clang-cl.exe: error: no such file or directory: '/foobar'

如果有发现cl.exe有的,clang-cl却不理解的命令,请提交一个bug。

执行clang-cl /?来查看支持的选项列表:

  1. /? | Display available options
  2. /c | Compile only
  3. /D <macro[=value]> Define macro
  4. /fallback Fall back to cl.exe if clang-cl fails to compile
  5. /Fe<file or directory> Set output executable file or directory (ends in / or \)
  6. /FI<value> Include file before parsing
  7. /Fo<file or directory> Set output object file, or directory (ends in / or \)
  8. /GF- Disable string pooling
  9. /GR- Disable RTTI
  10. /GR Enable RTTI
  11. /help Display available options
  12. /I <dir> Add directory to include search path
  13. /J Make char type unsigned
  14. /LDd Create debug DLL
  15. /LD Create DLL
  16. /link <options> Forward options to the linker
  17. /MDd Use DLL debug run-time
  18. /MD Use DLL run-time
  19. /MTd Use static debug run-time
  20. /MT Use static run-time
  21. /Ob0 Disable inlining
  22. /Od Disable optimization
  23. /Oi- Disable use of builtin functions
  24. /Oi Enable use of builtin functions
  25. /Os Optimize for size
  26. /Ot Optimize for speed
  27. /Ox Maximum optimization
  28. /Oy- Disable frame pointer omission
  29. /Oy Enable frame pointer omission
  30. /O<n> Optimization level
  31. /P Only run the preprocessor
  32. /showIncludes Print info about included files to stderr
  33. /TC Treat all source files as C
  34. /Tc <filename> Specify a C source file
  35. /TP Treat all source files as C++
  36. /Tp <filename> Specify a C++ source file
  37. /U <macro> Undefine macro
  38. /W0 Disable all warnings
  39. /W1 Enable -Wall
  40. /W2 Enable -Wall
  41. /W3 Enable -Wall
  42. /W4 Enable -Wall
  43. /Wall Enable -Wall
  44. /WX- Do not treat warnings as errors
  45. /WX Treat warnings as errors
  46. /w Disable all warnings
  47. /Zs Syntax-check only

/fallback 选项

当clang-cl带有/fallback选项运行的时候,它首先会尝试编译文件自身。对于它编译失败的文件,它将会回退并调用cl.exe来编译。

这个选项意在被临时用作一种方式来编译项目,当clang-cl不能成功编译所有文件的时候。clang-cl编译一个文件失败或者可能是引文它无法为一些C++特性产生代码,或者因为它无法解析一些Microsoft语言扩展。