[Qt-creator] Code completion doesn't work with ClangCodeModel

Erik Verbruggen erik.verbruggen at digia.com
Mon Jan 20 14:52:10 CET 2014


On 14-1-2014 12:19, Sergey Shambir wrote:
> Unfortunately project building and indexing are handled separately.
> ClangCodeModel does not take compiler flags in the same way as compiler
> - it attempts to infer them from metadata. Project meta collected by
> build system specific parser which is part of build system plugin.
>
> So ClangCodeModel just will not see fPIC flag nor on cmake neither on
> other build system.

The check that Qt's header does is against the macro that gets defined 
due to those flags. That macro should now be propagated with commit 
35e093ffbf8243399c3d817290ba8ae9e4f359a0. If that is not the case, let 
me know, or better: do a bug report.

-- Erik.


> Year ago I made patches to fix this limitation, but I also should make a
> few modifications in ClangCodeModel plugin to make it work. Since clang
> branch was merged, that's time to finish it, so please wait a few weeks :)
>
> After that flag-related bugs still will happen on some build systems
> such as autotools and especially on windows.
>
> 14 янв. 2014 г. 13:17 пользователь "Bernhard Seßler"
> <bernhard.sessler at corscience.de <mailto:bernhard.sessler at corscience.de>>
> написал:
>
>     Hi,
>
>     your own project needs to be build with either -fPIC or -fPIE (as
>     it's using the
>     pre-built Qt 5.2.0 libraries which have PIC enabled by default)
>
>     Regards,
>     Bernhard
>
>
>     On 14.01.2014 10:06, Yang Fan wrote:
>      > Hi,
>      >
>      > One more question, which target should be built with the option
>     -fPIE or
>      > -fPIC? The libclang so? The ClangCodeModel plugin? The QtCreator
>     IDE? Or my
>      > own project edited by QtCreator?
>      >
>      >
>      > On Tue, Jan 14, 2014 at 4:47 PM, Bernhard Seßler <
>      > bernhard.sessler at corscience.de
>     <mailto:bernhard.sessler at corscience.de>> wrote:
>      >
>      >> Hi,
>      >>
>      >> as far as I can see, you've got another problem: the binaries from
>      >> qt-project.org <http://qt-project.org> were configured with the
>     -reduce-relocations switch (and
>      >> thus
>      >> build with the -fPIC compiler switch), which means that your
>     executable /
>      >> library also must be compiled with position independent code
>     activated
>      >> (see:
>      >> http://en.wikipedia.org/wiki/Position-independent_code).
>      >>
>      >> All in all it's just adding the -fPIE (when building an
>     executable) or
>      >> -fPIC
>      >> command line switch (when building a library) to the compiler
>     arguments
>      >> (in case
>      >> you're using gcc).
>      >>
>      >> E.g. using CMake as build system (>= 2.8.9), it's as simple as:
>      >>
>      >> set(CMAKE_POSITION_INDEPENDENT_CODE ON)
>      >>
>      >> to enable generating position independent code for all top level
>     targets,
>      >> or
>      >>
>      >> set_target_properties(<target> PROPERTIES
>     POSITION_INDEPENDENT_CODE ON)
>      >>
>      >> to enable it only for the given <target>.
>      >>
>      >>
>      >> Regards,
>      >> Bernhard
>      >>
>      >> On 14.01.2014 01:56, Yang Fan wrote:
>      >> > Hi,
>      >> >
>      >> > I have dumpped the error messages, seemly it's caused by the
>     Qt 5.2
>      >> > binaries. I'm using the binaries downloaded from
>      >> > http://qt-project.org/downloads.
>      >> >
>      >> > *** Reparse for highlighting took 481 ms.
>      >> > "error" "/home/tvu/Qt5.2.0/5.2.0/gcc_64/include/QtCore/qglobal.h"
>      >> > [996:4(33790)] ""You must build your code with position
>     independent code
>      >> if
>      >> > Qt was built with -reduce-relocations. "         "Compile your
>     code with
>      >> > -fPIC or -fPIE."
>      >> >   in file included from
>     /home/tvu/Shareware/istkani/src/main.cpp:1:
>      >> >   in file included from
>     /home/tvu/Shareware/istkani/src/main.cpp:1:
>      >> >   in file included from
>      >> > /home/tvu/Qt5.2.0/5.2.0/gcc_64/include/QtWidgets/QApplication:1:
>      >> >   in file included from
>      >> >
>     /home/tvu/Qt5.2.0/5.2.0/gcc_64/include/QtWidgets/qapplication.h:45:
>      >> >   in file included from
>      >> >
>     /home/tvu/Qt5.2.0/5.2.0/gcc_64/include/QtCore/qcoreapplication.h:45:"
>      >> > "error"
>     "/opt/intel/composer_xe_2013.0.079/compiler/include/math.h"
>      >> > [27:3(742)] ""This Intel <math.h> is for use with only the Intel
>      >> compilers!"
>      >> >   in file included from
>     /home/tvu/Shareware/istkani/src/main.cpp:1:
>      >> >   in file included from
>     /home/tvu/Shareware/istkani/src/main.cpp:4:
>      >> >   in file included from
>      >> > /home/tvu/Qt5.2.0/5.2.0/gcc_64/include/QtQml/QtQml:3:
>      >> >   in file included from
>      >> > /home/tvu/Qt5.2.0/5.2.0/gcc_64/include/QtQml/QtQmlDepends:2:
>      >> >   in file included from
>      >> > /home/tvu/Qt5.2.0/5.2.0/gcc_64/include/QtCore/QtCore:65:
>      >> >   in file included from
>      >> > /home/tvu/Qt5.2.0/5.2.0/gcc_64/include/QtCore/qmath.h:49:"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [46:5(1373)] "no
>      >> member
>      >> > named 'QDir' in 'QFont'"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [57:10(1716)] "use of
>      >> > undeclared identifier 'dir'; did you mean 'div'?
>      >> >   'div' declared here"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [57:10(1716)] "member
>      >> > reference base type 'div_t (int, int) throw()' is not a
>     structure or
>      >> union"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [57:14(1720)] "member
>      >> > reference base type 'div_t (int, int) throw()' is not a
>     structure or
>      >> union"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [59:9(1792)] "use of
>      >> > undeclared identifier 'dir'; did you mean 'div'?
>      >> >   'div' declared here"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [59:9(1792)] "member
>      >> > reference base type 'div_t (int, int) throw()' is not a
>     structure or
>      >> union"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [59:13(1796)] "member
>      >> > reference base type 'div_t (int, int) throw()' is not a
>     structure or
>      >> union"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [60:9(1812)] "use of
>      >> > undeclared identifier 'dir'; did you mean 'div'?
>      >> >   'div' declared here"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [60:9(1812)] "member
>      >> > reference base type 'div_t (int, int) throw()' is not a
>     structure or
>      >> union"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [60:13(1816)] "member
>      >> > reference base type 'div_t (int, int) throw()' is not a
>     structure or
>      >> union"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [61:28(1872)] "use of
>      >> > undeclared identifier 'dir'; did you mean 'div'?
>      >> >   'div' declared here"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [61:28(1872)] "member
>      >> > reference base type 'div_t (int, int) throw()' is not a
>     structure or
>      >> union"
>      >> > "error" "/home/tvu/Shareware/istkani/src/main.cpp"
>     [61:32(1876)] "member
>      >> > reference base type 'div_t (int, int) throw()' is not a
>     structure or
>      >> union"
>      >> > *** Highlighting took 491 ms in total.
>      >> > *** Fast re-indexing took 0 ms in total.
>      >> > /home/tvu/Qt5.2.0/5.2.0/gcc_64/include/QtCore/qglobal.h:996:4:
>     error:
>      >> "You
>      >> > must build your code with position independent code if Qt was
>     built with
>      >> > -reduce-relocations. "         "Compile your code with -fPIC
>     or -fPIE."
>      >> >
>     /opt/intel/composer_xe_2013.0.079/compiler/include/math.h:27:3: error:
>      >> > "This Intel <math.h> is for use with only the Intel compilers!"
>      >> > /home/tvu/Shareware/istkani/src/main.cpp:48:5: error: no
>     member named
>      >> > 'QDir' in 'QFont'
>      >> > /home/tvu/Shareware/istkani/src/main.cpp:57:10: error: use of
>     undeclared
>      >> > identifier 'dir'
>      >> > /home/tvu/Shareware/istkani/src/main.cpp:59:9: error: use of
>     undeclared
>      >> > identifier 'dir'
>      >> > /home/tvu/Shareware/istkani/src/main.cpp:60:9: error: use of
>     undeclared
>      >> > identifier 'dir'
>      >> > /home/tvu/Shareware/istkani/src/main.cpp:61:28: error: use of
>     undeclared
>      >> > identifier 'dir'
>      >> > ... Completion done in 3313 ms, with 146 items.
>      >> >
>      >> >
>      >> >
>      >> > On Mon, Jan 13, 2014 at 6:07 PM, Erik Verbruggen
>      >> > <erik.verbruggen at digia.com
>     <mailto:erik.verbruggen at digia.com>>wrote:
>      >> >
>      >> >> On 11-1-2014 3:07, Yang Fan wrote:
>      >> >> > Hi,
>      >> >> >
>      >> >> > I have built the ClangCodeModel plugin successfully with
>     Qt5.2 on Mac
>      >> OS
>      >> >> > X 10.9 and on Debian Wheezy, but after I enabled the plugin and
>      >> selected
>      >> >> > the Code Model in Preference dialog, the code completion
>     feature
>      >> doesn't
>      >> >> > work. When I typed a dot follows an object name, no
>     candidate list
>      >> >> > appears. Any suggestion?
>      >> >>
>      >> >> Can you run with the environment variable QTC_CLANG_VERBOSE
>     set (value
>      >> >> doesn't matter), and check stdout? That should show the libclang
>      >> >> invocations plus any errors while parsing.
>      >> >>
>      >> >> -- Erik.
>      >> >>
>      >> >> _______________________________________________
>      >> >> Qt-creator mailing list
>      >> >> Qt-creator at qt-project.org <mailto:Qt-creator at qt-project.org>
>      >> >> http://lists.qt-project.org/mailman/listinfo/qt-creator
>      >> >>
>      >> >
>      >> >
>      >> >
>      >> >
>      >> >
>      >> > _______________________________________________
>      >> > Qt-creator mailing list
>      >> > Qt-creator at qt-project.org <mailto:Qt-creator at qt-project.org>
>      >> > http://lists.qt-project.org/mailman/listinfo/qt-creator
>      >> >
>      >> _______________________________________________
>      >> Qt-creator mailing list
>      >> Qt-creator at qt-project.org <mailto:Qt-creator at qt-project.org>
>      >> http://lists.qt-project.org/mailman/listinfo/qt-creator
>      >>
>      >
>      >
>      >
>     _______________________________________________
>     Qt-creator mailing list
>     Qt-creator at qt-project.org <mailto:Qt-creator at qt-project.org>
>     http://lists.qt-project.org/mailman/listinfo/qt-creator
>
>
>
> _______________________________________________
> Qt-creator mailing list
> Qt-creator at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qt-creator
>




More information about the Qt-creator mailing list