Название: 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. Так поставленная проблема не решается. |