Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: SigMA от Декабрь 30, 2013, 16:42



Название: QT Creator. Подключение стандартных заголовков С++
Отправлено: SigMA от Декабрь 30, 2013, 16:42
Добрый день!

Начинаю осваивать инструмент. Проблема с тем, как подключить заголовки стандартных библиотек С++ через относительные пути.
Уже второй день мозги набекрень. Всё что можно, уже перелопатил. Понимаю, что проблема тупая, но тем не менее. Помогите, плиз.

В QT Creator создаю простое приложение без использования QT.

В редакторе #include <iostream> подчёркивается и пишет, что нет такого файла или каталога.
Проект при этом собирается нормально.

Добавил в файл проекта абсолютный путь к каталогу к заголовкам C++:
INCLUDEPATH += d:/C++/Mingw/4.6/lib/gcc/mingw32/4.6.2/include/c++
Проблема исчезла. Но... Абсолютный путь прописывать - это совсем не гуд.

Как можно QT Creator указать расположение заголовков С++ через относительные пути.

С наступающим Новым Годом!!!


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: Bepec от Декабрь 30, 2013, 17:10
1) прописать пути к инклудам в IDE.
2) прописать пути к инклудам в переменных окружения системы.
3) написать bat файл, который будет устанавливать переменные окружения и компилировать.

PS а что вам мешает в includePath прописать относительный путь?


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: SigMA от Декабрь 30, 2013, 20:20
1) прописать пути к инклудам в IDE.
Ecли бы я знал, то прописал бы. Но не нашел, где это можно сделать

2) прописать пути к инклудам в переменных окружения системы.
Это пробовал- не помогает. Qt creator на них не реагирует.

3) написать bat файл, который будет устанавливать переменные окружения и компилировать.
Я писал, что проект компилируется нормально. Проблема именно в поведении Редактора Qt creator.

PS а что вам мешает в includePath прописать относительный путь?
Мешает незнание, как это сделать. Собственно в этом и вопрос.
Как пописать относительные пути от каталога проекта, я знаю. А вот как это сделать от произвольного Места - не знаю. Может быть есть возможность использования в .pro файле переменных окружения? Если да, то это, думаю, решит проблему.



Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: Bepec от Декабрь 30, 2013, 20:40
Эмм.. У вас нет произвольного места. У вас есть папка с pro файлом. И это отправная точка.

Любая программа видит все файлы в директориях, которые прописаны в переменный окружения path. Так что... Не свистите :D

Наверно просто Creator не может распарсить тот файл из-за чего то, мб действительно у него что-то в путях. Большее могут подсказать только те несчастные, что им пользуются :)



Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: Old от Декабрь 30, 2013, 20:47
Любая программа видит все файлы в директориях, которые прописаны в переменный окружения path. Так что... Не свистите :D
Смысл этой переменной в другом, поэтому глупо пытаться найти там нужную информацию.


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: SigMA от Декабрь 30, 2013, 21:09
Эмм.. У вас нет произвольного места. У вас есть папка с pro файлом. И это отправная точка.
Как это может служить отправной точкой, если, например, проект и, соответственно, pro файл лежат на одном диске, а хидеры, которые надо подключить - на другом.

Любая программа видит все файлы в директориях, которые прописаны в переменный окружения path. Так что... Не свистите :D
Не свистю  :). Я немного догадываюсь, что программа видит все переменные окружения. Если знаете, подскажите, как их можно использовать.

Наверно просто Creator не может распарсить тот файл из-за чего то, мб действительно у него что-то в путях.
Какой файл не может распарсить? Вы про что?


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: Bepec от Декабрь 31, 2013, 00:04
1) Конечно на другой диск вы перейти по относительному пути не сможете.
2) Программа ищет все необходимые файлы, библиотеки и прочая по переменным окружения автоматом, если ОС - Windows :D
3) Смотрим что у вас происходит.
   Вы компилируете программу.
   У вас она компилируется.
   Но в редакторе подчёркивается и пишет, что нет такого файла или каталога.

Вывод:
   Ваш компилятор видит исходники.
   QtCreator не видит исходников, соответственно не может открыть файл и распарсить (прочитать) его содержимое.

PS to Old: расскажите зачем переменная path?


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: kambala от Декабрь 31, 2013, 00:12
какой смысл в относительных путях если на другой машине вряд ли заголовочные файлы и/или проекты будут лежать в том же месте?
PS to Old: расскажите зачем переменная path?
http://en.wikipedia.org/wiki/PATH_(variable)


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: Old от Декабрь 31, 2013, 00:26
PS to Old: расскажите зачем переменная path?
kambala уже дал ссылку, но дам еще одну:
http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D1%8B_Windows


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: Bepec от Декабрь 31, 2013, 06:53
Так то да, ток обычно туда всё пихают. Начиная от dll, заканчивая скриптами.


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: SigMA от Декабрь 31, 2013, 07:34
Завязавшаяся дискуссия относительно path, это конечно хорошо.

Но попробую вернуть ее к исходной поставленной проблеме.


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: Bepec от Декабрь 31, 2013, 07:46
И где ваша попытка? :)


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: SigMA от Декабрь 31, 2013, 08:56
И где ваша попытка? :)
Прошу вернуться к исходному посту текущей темы  :)


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: kambala от Декабрь 31, 2013, 12:20
какой смысл в относительных путях если на другой машине вряд ли заголовочные файлы и/или проекты будут лежать в том же месте?


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: SigMA от Декабрь 31, 2013, 14:27
какой смысл в относительных путях если на другой машине вряд ли заголовочные файлы и/или проекты будут лежать в том же месте?
Естественно, Все будет в разных местах. Поэтому и нужны относительные пути к заголовочным файлам. Но относительные пути должны быть не от проекта, а, например,  от переменных окружения.
Философствовать, конечно, можно долго. Но как все-таки решить поставленную проблему. Формулирую ее еще раз.
Нужно заставить qt creator видеть заголовочные файлы с++, не указывая абсолютный путь к ним в .pro файле.
Если это Можно сделать через переменную окружения path, ничего против этого не имею.


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: Bepec от Декабрь 31, 2013, 15:11
Тогда я вам уже ответил :D

В принципе у IDE (беру Visual Studio) есть собственные директории для инклудов, либрари и бинарных файлов. Указываться они должны в настройках.

Если Creator этого не умеет, остаётся только прописать переменную окружения в системе.

PS я противник Creator, потому информацией о нём не располагаю :) Ну кроме похабной :D


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: Old от Декабрь 31, 2013, 15:21
Если это Можно сделать через переменную окружения path, ничего против этого не имею.
Попробуйте задать переменную окружения, например, INCS, где перечислите через точку с запятой пути до нужных директорий.
В pro файле добавьте:
INCLUDEPATH += $(INCS)

А лучше посмотрите в исходниках креатора, где и как он ищет эти пути под вендой.


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: SigMA от Декабрь 31, 2013, 15:49
Попробуйте задать переменную окружения, например, INCS, где перечислите через точку с запятой пути до нужных директорий.
В pro файле добавьте:
INCLUDEPATH += $(INCS)

Совершенно верно. Только что сам до этого дошёл опытным путём.
Спасибо за ответ.

Переменную окружения можно задать двумя способами.
1. На уровне операционной системы
2. На уровне каждого конкретного проекта в qt creator: Проекты-><ВашПроект> -> Сборка -> Среда сборки. Там можно определить приватную переменную окружения и использовать её, как указано выше


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: ViTech от Январь 01, 2014, 11:37
В винде компиляторы (и все остальные) должны уметь брать заголовки из путей, перечисленных в переменной окружения INCLUDE, и библиотеки из LIB. Соответственно, месторасположение общесистемных заголовков и библиотек можно задать в системных переменных окружения, тогда они будут доступны всем. Хотя лучше эти переменные задавать отдельно для каждого проекта, чтоб коллизий не было. И не будет необходимости добавлять пути в INCLUDEPATH.


Название: Re: QT Creator. Подключение стандартных заголовков С++
Отправлено: SigMA от Январь 01, 2014, 16:02
В винде компиляторы (и все остальные) должны уметь брать заголовки из путей, перечисленных в переменной окружения INCLUDE, и библиотеки из LIB. <...> И не будет необходимости добавлять пути в INCLUDEPATH.

Попробовал объявить переменную окружения INCLUDE на уровне проекта и не включать её в INCLUDEPATH. Так поставленная проблема не решается.