Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Qt Creator Clang Code Model: Difference between revisions
No edit summary |
No edit summary |
||
Line 42: | Line 42: | ||
* QTC_CLANG_NO_ALIVE_TIMER - Simplifies debugging in certain cases. | * QTC_CLANG_NO_ALIVE_TIMER - Simplifies debugging in certain cases. | ||
* QTC_CLANG_FORCE_VERBOSE_ALIVE - Simplifies debugging in certain cases. | * QTC_CLANG_FORCE_VERBOSE_ALIVE - Simplifies debugging in certain cases. | ||
* 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 | |||
== Libclang == | == Libclang == |
Revision as of 16:37, 18 January 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 export LIBCLANG_TIMING=1 ./qtcreator
Windows (start DebugView in advance to see the output):
set QT_LOGGING_RULES=qtc.clang*=true set LIBCLANG_TIMING=1 qtcreator.exe
The debugging output contains among others:
- The IPC messages send/received
- Output of libclang while parsing
Internal command line
The debugging output from above will contain all the command line options that are passed on to libclang, which is enough for most cases.
However, to see also the resulting internal command line of libclang run:
- Restart Qt Creator with QTC_CLANG_NO_DIAGNOSTIC_CHECK=1 (>= Qt Creator 4.5)
- Switch to projects mode and there to the "Clang Code Model"
- Copy some warning configuration by clicking on "Copy...", give it a name like "Debug"
- Replace all the options from the copied configuration with "-###"
- 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.
Related Environment Variables
- QTC_ENABLE_CLANG_LIBTOOLING - Build against Clang's C++ libs; the ClangFormat and ClangRefactoring plugin and dependencies will be build.
- LIBCLANG_TIMING - Timings from libclang for parse / reparse / preamble generation / completion.
- QTC_CLANG_ENABLE_STACKTRACES - For debugging. Enables the clang stack trace printer on a crash. Might deadlock clangbackend.
- QTC_CLANG_NO_DIAGNOSTIC_CHECK - Avoid validation of warning configuration (>= Qt Creator 4.5)
- 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.
- 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
Libclang
libclang is used inside clangbackend 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
Minimal libclang installation that Qt Creator can use
The following targets are sufficient for this:
install-libclang install-libclang-headers install-clang-headers install-llvm-config