Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: smfem от Февраль 04, 2019, 17:42



Название: настройка модели кода clang, unknown type name 'namespace'
Отправлено: smfem от Февраль 04, 2019, 17:42
Здравствуйте!

Перетекаю из винды на Linux (вчера установил Kubuntu 18.04), всё сходу скомпилилось и заработало (после установки gcc, clang, make и build-essential libgl1-mesa-dev), но

стали появляться странные сообщения от Clang:

Код:
#include <vector>
/home/user/Projects/SolidGUI/elementary.h:8: ошибка: 'vector' file not found
Код:
template <typename T>
inline T MIN(T a, T b)
{
    return a < b ? a : b;
}
/home/user/Projects/SolidGUI/elementary.h:15: ошибка: unknown type name 'template'
/home/user/Projects/SolidGUI/elementary.h:15: ошибка: expected identifier or '('
Код:
namespace Solid
{
/home/user/Projects/SolidGUI/solidPlastic.h:11: ошибка: unknown type name 'namespace'
/home/user/Projects/SolidGUI/solidPlastic.h:11: ошибка: expected ';' after top level declarator
Код:
namespace Solid
{
/home/user/Projects/SolidGUI/solidPlastic.cpp:8: ошибка: unknown type name 'namespace'
/home/user/Projects/SolidGUI/solidPlastic.cpp:8: ошибка: expected ';' after top level declarator

Подскажите пожалуйста, как фиксить?

Он стал теперь код воспринимать как C (а не C++)? В мышкотыкательных настройках не вижу  опций, чтобы явно это задать.. В общем, хочется понять, как его настраивать, этот Clang, чтобы явно задавать параметры типа "src.h - c++".
Или не в том дело?

(немного стыдно создавать вторую тему по шлангу, но решить проблему пока что не удаётся)


Название: Re: настройка модели кода clang, unknown type name 'namespace'
Отправлено: ViTech от Февраль 04, 2019, 18:34
Он стал теперь код воспринимать как C (а не C++)? В мышкотыкательных настройках не вижу  опций, чтобы явно это задать.. В общем, хочется понять, как его настраивать, этот Clang, чтобы явно задавать параметры типа "src.h - c++".
Или не в том дело?

Явно задавать параметры для Clang Code Model не надо, она должна сама определять настройки из "окружения". Стоит проверить правильность настроек компиляторов в "Tools/Options.../Kits" в Qt Creator, и опции для компилятора в файле проекта.

Здесь (https://bugreports.qt.io/browse/QTCREATORBUG-20884) немного можно посмотреть на процесс определения настроек для Clang Code Model. Может ещё какое-нибудь несоответствие версий инструментов(gcc, clang) в системе(Kubuntu 18.04) влияние оказывает.


Название: Re: настройка модели кода clang, unknown type name 'namespace'
Отправлено: smfem от Февраль 04, 2019, 19:36
Явно задавать параметры для Clang Code Model не надо, она должна сама определять настройки из "окружения". Стоит проверить правильность настроек компиляторов в "Tools/Options.../Kits" в Qt Creator, и опции для компилятора в файле проекта.
Вместо компилятора для C++ было пустое место, установил в это пустое место GCC и всё заработало, спасибо! Почти без бубна.
http://www.picshare.ru/uploads/190204/U3D99lJpUU.png

[offtop]
говорят же, что нужен бубен для линуксов, а на самом деле достаточно просто понимать, как всё работает, и использовать..
думал что переезд будет сложнее
начал чекать Gnuplot - просто сказка  :)
[/offtop]

Цитировать
Здесь немного можно посмотреть на процесс определения настроек для Clang Code Model. Может ещё какое-нибудь несоответствие версий инструментов(gcc, clang) в системе(Kubuntu 18.04) влияние оказывает.
Примерно понял как настраивать, ещё раз спасибо за помощь.
Как ведут себя версии приложений и как взаимодействуют между собой пока что не понимаю, позже посмотрю (базы не хватает на данный момент)


[offtop]
Некоторые домыслы для тех, кто окажется в подобной ситуации.
Наверно надо было сначала установить "окружение" (gcc, clang, make, libgl), соре если использую "окружение" не корректно, затем уже устанавливать Qt Creator, тогда бы всё работало "из коробки", установились бы нужные опции при создании проекта (или создавать проект после установки "окружения"), но не уверен, проверять буду в следующий раз.

Некоторые наблюдения по переносу моего кода (в основном математика) на моей машине (древняя, intel E7200 4GB ddr2, которая даёт хороший стимул к оптимизации) из винды в Linux.
1) Компилирует gcc примерно с такой же скоростью как msvc
2) Исполняется код в Ubuntu примерно так же быстро как в Windows
Думал что будет какой-то перевес в чью-то сторону, но в данном случае его нет (с точностью до ~5%).[/offtop]


Название: Re: настройка модели кода clang, unknown type name 'namespace'
Отправлено: Авварон от Февраль 05, 2019, 12:14
Среатор перечитывает окружение при старте, добавляя\удаляя автоопределенные компиляторы\версии Qt, так что установка окружения до него не помогла бы, потому что, к сожалению, он не всегда детектит правильно, в частности, я натыкался на похожу проблему, когда в качестве спп компилятора был указан сишный (скажем, gcc vs g++)