[Qt-creator] Bundling clang (for code model) with qt-creator package

Andrzej Telszewski atelszewski at gmail.com
Wed Aug 31 06:07:08 CEST 2016


On 29/08/16 08:40, Nikolai Kosjar wrote:
> Hi!
>
> On 08/28/2016 03:05 AM, Andrzej Telszewski wrote:
>> Hi,
>>
>> As mentioned here:
>> https://blog.qt.io/blog/2016/08/25/qt-creator-4-1-0-released/ it might
>> be valuable to use clang 3.8.1 with Qt Creator 4.1.0.
>>
>> But my system's llvm package is at version 3.8.0 and will stay like that
>> for quite some time.
>
> Note that there is hardly any difference between llvm 3.8.0 and 3.8.1
> when it comes to the clang code model. The changes between 3.8.0 and
> 3.8.1 look all backend-specific, but we use only the frontend.
>
> For some reason the mentioned patch in the blog post is not part of the
> official 3.8.1 release, but of our shipped build.
>

What would be your suggestion as of using 3.8.1 (when it comes to the 
code model of course)?
Does it make any sense to switch to it or is it fine to stay with 3.8.0?
Please note, I'm targeting Linux platform only, so the MSVC patch is 
irrelevant for me.

>> As I don't want to update the system's llvm, I would like to package
>> version 3.8.1 of llvm together with qt-creator, for the purpose of Code
>> Model (is there anything else internal to Qt Creator that uses llvm?).
>
> The Clang Static Analyzer plugin needs the clang executable + the
> intrinsics headers (currently installed, e.g. for Linux at
> ${QTCREATOR_INSTALL_ROOT}/share/qtcreator/cplusplus/clang/3.8.1/include).
>
>> I see two solutions:
>> 1. Create separate package for llvm, something like "qt-creator-llvm"
>> that installs under non-system wide directory and then, when building Qt
>> Creator, adjust LLVM_INSTALL_DIR to point to that directory.
>> 2. Create single package containing both llvm and Qt Creator.
>>
>> Solution 1) is straightforward, in that I can first build and install
>> qt-creator-llvm and then build and install qt-creator.
>>
>> Solution 2) requires that I can somehow point the qt-creator
>> LLVM_INSTALL_DIR to the temporary directory where the llvm has been
>> installed for the purpose of packaging. But once the packaging has been
>> finished, LLVM_INSTALL_DIR has to point to a different directory,
>> relative to the package installation directory and not package creation
>> directory.
>>
>> I would much preferred the second solution.
>> So the question is: is it possible?
>
> I'm not sure I understand the requirements needed for this, but we do
> this is already for our official packages.
>
> Build Qt Creator with LLVM_INSTALL_DIR set and install it (see link
> below). The relevant parts of the LLVM_INSTALL_DIR will be copied over
> to Qt Creator's installation directory (+ adapting the rpath etc.).
>

I'm thinking of the following _pseudo_ build and packaging instructions:

$ mkdir /tmp/package-qt-creator

LLVM:
$ cmake \
     -DCMAKE_INSTALL_PREFIX=/usr/libexec/qtcreator/llvm
$ make install DESTDIR=/tmp/package-qt-creator

QTC:
$ qmake-qt5 qtcreator.pro \
     QTC_PREFIX=/usr \
     LLVM_INSTALL_DIR=/tmp/package-qt-creator/usr/libexec/qtcreator/llvm
$ make install INSTALL_ROOT=/tmp/package-qt-creator

Then I create a package out of /tmp/package-qt-creator and once it's 
installed, the paths will look like that:

/usr/bin/qtcreator
/usr/libexec/qtcreator/llvm
(..)

Is this the correct path :-) to follow?


>
> http://wiki.qt.io/Building_Qt_Creator_from_Git#Installing_Qt_Creator_.28optional.29
>

Is it possible you provide me the full build script/instructions you're 
using to build the official binary package for Linux?
I would like to see the exact configuration flags and which source code 
tarballs of LLVM are needed for the code model and static analyzer.
The point is that I probably don't need to build the fully fledged 
LLVM/Clang compiler set, but as you mentioned before, only part of it 
should be sufficient.

>
>
> Nikolai
>
>

Many thanks!

-- 
Best regards,
Andrzej Telszewski



More information about the Qt-creator mailing list