The ClangCodeModel plugin
=========================

The ClangCodeModel plugin integrates the clang frontend into Qt Creator. Clang
is "a C language family frontend for LLVM". You can find more information at
http://clang.llvm.org/.

At the time of writing the plugin can replace the following functionality of
the built-in code model:
    * Highlighting
    * Completion

All other functionality relies on the built-in code model (indexing, quick
fixes, follow symbol, find usages, ...).

Setup
=====

Compile the plugin
------------------

1. Get libclang

You need to have libclang (and thus llvm) installed on your system. Either
build llvm/clang yourself [1], install some ready-to-use package [2] or use the
package manager of your system.

    [1] http://clang.llvm.org/get_started.html
        See http://llvm.org/docs/GettingStarted.html#git-mirror for git mirrors.
    [2] http://llvm.org/releases/ or http://llvm.org/builds/

If you are building llvm/clang yourself, make sure to build it in release mode.

2. Set LLVM_INSTALL_DIR and (re)build Qt Creator

Point the LLVM_INSTALL_DIR variable to the build/installation directory of
llvm, e.g.:

    Installed via package manager on GNU/Linux:
        LLVM_INSTALL_DIR=/usr/lib/llvm-3.4
    Manually build on Unix in release mode:
        LLVM_INSTALL_DIR=$HOME/llvm-build/Release+Asserts
    Installed a snapshot on Windows:
        LLVM_INSTALL_DIR=C:\llvm

Set the variable either as part of the build environment or pass it directly to
qmake and rebuild Qt Creator. Watch out for a message like

    Project MESSAGE: Building ClangCodeModel plugin with Clang from /usr/lib/llvm-3.4
    Project MESSAGE:   INCLUDEPATH += /usr/lib/llvm-3.4/include
    Project MESSAGE:   LIBS += -L/usr/lib/llvm-3.4/lib -lclang

This indicates that the ClangCodeModel plugin will be built.

Enable the plugin
-----------------

Enable the "ClangCodeModel" plugin in the dialog "Menu: Help -> About Plugins"
and restart Qt Creator.

Select the file types you want to use the ClangCodeModel for in "Menu: Tools ->
Options -> C++ -> Tab: Code Model". For the next opened file matching the
selected file types the ClangCodeModel will be used (see limitations at the
start of this README).

