Qt Creator Clang Code Model: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(30 intermediate revisions by 3 users not shown)
Line 8: Line 8:
Linux/Mac:
Linux/Mac:
  export QT_LOGGING_RULES=qtc.clang*=true
  export QT_LOGGING_RULES=qtc.clang*=true
export LIBCLANG_TIMING=1
  ./qtcreator
  ./qtcreator


Windows (start [https://technet.microsoft.com/en-us/sysinternals/debugview.aspx DebugView] in advance to see the output):
Windows (start [https://technet.microsoft.com/en-us/sysinternals/debugview.aspx DebugView] in advance to see the output):
  set QT_LOGGING_RULES=qtc.clang*=true
  set QT_LOGGING_RULES=qtc.clang*=true
set LIBCLANG_TIMING=1
  qtcreator.exe
  qtcreator.exe


The debugging output contains among others:
This will create way too much output. But since the lines are prefixed with the rule that generated them, you can easily adapt your settings to what you are actually interested in.
* The IPC messages send/received
* Output of libclang while parsing


=== Internal command line ===  
=== Compiler command lines for the code model context ===  
The debugging output from above will contain all the command line options that are passed on to libclang, which is enough for most cases.
The file <build dir>/.qtc_clangd/compile_commands.json contains the exact command lines that clangd uses to parse the files in the project.


However, to see also the resulting internal command line of libclang run:
== Related Environment Variables ==
# Switch to projects mode and there to the "Clang Code Model"
=== Run time related ===
# Copy some warning configuration by clicking on "Copy...", give it a name like "Debug"
* QTC_CLANG_USE_TOOLCHAIN_MACROS - Uses also the toolchain macros for code model
# Replace all the options from the copied configuration with "-###"
* QTC_CLANG_CMD_OPTIONS_BLACKLIST - Semicolon sepparated list of compiler command line options not to be passed to code model
# Close and re-open the editor document - the new debugging output will contain also the internal command line


Note that libclang/clangbackend will crash afterwards, so do not forget to switch back to a sane warning configuration.
== clangd ==
clangd is used via the language server protocol to provide code model features


=== Builds ===
Linux and Mac:


== Related Environment Variables ==
libclang is built with the same compilers as Qt Creator ("Clang 7.0 (Apple)" for macOS, and GCC 5.3 from RHEL (which turns on old ABI compatibility with _GLIBCXX_USE_CXX11_ABI=0 by default) on Linux)
=== Build related ===
 
* QTC_NO_CLANG_LIBTOOLING - Do not build against Clang's C++ libs; the ClangRefactoring plugin won't be build.
Windows:


=== Run time related ===
Currently libclang is built with optimized MinGW compiler for all Qt Creator versions. More information about Windows builds: [[Build libclang on Windows]]
* LIBCLANG_TIMING - Timings from libclang for parse / reparse / preamble generation / completion.
* QTC_CLANG_NO_SUPPORTIVE_TRANSLATIONUNIT - Use only one translation unit per document.
* QTC_CLANG_NO_ALIVE_TIMER - Simplifies debugging in certain cases.
* QTC_CLANG_FORCE_VERBOSE_ALIVE - Simplifies debugging in certain cases.

Latest revision as of 14:27, 20 May 2022

Documentation: http://doc.qt.io/qtcreator/creator-clang-codemodel.html

Debugging

With the following invocation debugging output will be generated:

Linux/Mac:

export QT_LOGGING_RULES=qtc.clang*=true
./qtcreator

Windows (start DebugView in advance to see the output):

set QT_LOGGING_RULES=qtc.clang*=true
qtcreator.exe

This will create way too much output. But since the lines are prefixed with the rule that generated them, you can easily adapt your settings to what you are actually interested in.

Compiler command lines for the code model context

The file <build dir>/.qtc_clangd/compile_commands.json contains the exact command lines that clangd uses to parse the files in the project.

Related Environment Variables

Run time related

  • QTC_CLANG_USE_TOOLCHAIN_MACROS - Uses also the toolchain macros for code model
  • QTC_CLANG_CMD_OPTIONS_BLACKLIST - Semicolon sepparated list of compiler command line options not to be passed to code model

clangd

clangd is used via the language server protocol to provide code model features

Builds

Linux and Mac:

libclang is built with the same compilers as Qt Creator ("Clang 7.0 (Apple)" for macOS, and GCC 5.3 from RHEL (which turns on old ABI compatibility with _GLIBCXX_USE_CXX11_ABI=0 by default) on Linux)

Windows:

Currently libclang is built with optimized MinGW compiler for all Qt Creator versions. More information about Windows builds: Build libclang on Windows