![]() |
|
|
![]()
|
|
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
У меня есть небольшой опыт создания make файлов, но в qt это должен делать qmake, поэтому проблема и возникла
Задача в следующем: есть три папки, для простоты: 1, 2, common В папках 1 и 2 отдельные проекты, в папке common инклюды, которые может использовать проект 1 или 2. Проблема в том, что как не изварачиваюсь я прописывая различные INCLUDEPATH в файлы проектов, ничего не выходит.... То компилятор не может найти подключаемый хедер, то линковщик не может найти нужный объектник... Хотел спросить у кого есть опыт создания больших проектов на qt, поделитесь опытом, как правильно создать файлы проектов или альтернативные способы решения данной проблемы... Заранее благодарен за помощь |
|||
|
||||
| SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Если в папке common существуют подпапки, то поиск в них производиться не будет. Поэтому надо жестко прописывать каждую. Также надо убедиться, что нигде в заголовках нет подобных относительных путей:
Я так использовал:
По поводу "мусора", который создает компилятор. С этим я борюсь так:
Т.е. для каждой версии сборки создается "временная" папочка, чтобы не засорять исходники. Это сообщение отредактировал(а) SABROG - 2.2.2009, 22:20 |
||||||
|
|||||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Нет, в папке common все находится без поддиректорий и относительные пути нигде не указаны, я хочу, чтобы искал именно по мейк целям...
Супер по поводу твоей борьбы с мусором, но откуда инфу ты берешь по составлению файла проекта? |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Из ассистента, плюс эксперименты. Если в папках 1 и 2 - отдельные проекты, то стоит в каждой папке создать свой .pro файл, затем создать общий .pro файл, который будет собирать оба проекта. В нем прописать ключ SUBDIRS:
Если важен порядок сборки, то еще и это:
|
||||
|
|||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Да, у меня отдельные проекта, там находятся отдельные про файлы... но вот про порядок сборки поподробнее можно?
У меня проблема вчера была, что один из проектов не мог найти объектники из папки common вот пример одного из моих про файлов, сейчас туда добавил еще твои конфиги... буду дальше пробовать... файлы ssl-socket.* находятся в папке common и он выдавал undefine reference на некоторые методы класса
Это сообщение отредактировал(а) null56 - 3.2.2009, 10:14 |
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
объясни пожалуйста вот эту строчку?
|
|||
|
||||
| just_geek |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
Проверка условия.
В ассистенте все ж есть
|
||||||
|
|||||||
| null56 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Все нашел, спасибо... это по qmake надо было искать, а я чо - то тупил....
Один вопросик только непонятный пока мне Почему
хотя
Не ясно.. что не сделал? |
||||||
|
|||||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Откуда *объектники* вообще взялись в папке common? Они генерятся на этапе компиляции или это сторонние файлы скомпиленные ранее? Она означает следующее. Если в CONFIG текущая конфигурация "debug" (CONFIG += debug), то условие выполняется (true), при этом второй параметр означает что, если конфигурация не debug, то она release. (взаимоисключающая конфигурация), при этом условие не выполняется (false). В результате, если опция стоит debug_and_release, то оба условия выполняются и для каждого makefile'a прописывается своя конфигурация.
INCLUDEPATH не влияет на исходники, т.ч. пути к ним надо явно прописывать
И даже после этого я не уверен, что будет работать. Т.к. одно время у меня была проблема с относительными путями и решилась она только после того как я жестко с диском прописал полный путь. Это сообщение отредактировал(а) SABROG - 3.2.2009, 12:26 |
||||
|
|||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
SABROG , глянь чуть выше, почему не видит файлы?
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Сервак глючит жестко...
При попытке ответить. --- Что такое common, это библиотека или программа? Используют ли проекты 1 и 2 эту библиотеку? Или это всего-лишь общие исходники для обоих проектов? Если это библиотека, что её хедеры не надо прописывать в .pro файле, только LIBS и INCLUDEPATH. Если же это просто общие исходники, то их надо вписывать в оба .pro файла этих двух проектов. Третий .pro файл (общий) просто будет собирать все проекты в поддеректориях, если он нужен вообще. Это сообщение отредактировал(а) SABROG - 3.2.2009, 13:05 |
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Отпишись плиз, когда будет возможность, а я пока вот так посижу
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Так еще можно
INCLUDEPATH передается компилятору, он там ищет хедеры, которые не являются твоей программой. Хедеры к бибилоеткам, системным, чужим... |
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
common - это просто классы или обычные инклюды, которые может использовать, как проект 1, так и проект 2....
Хотя может и правда сделать из нее библиотеку из объектников, инклюдить заголовки, а для линковки использовать либу Мне другое интересно, почему, указывая INCLUDEPATH, он не ищет инклюды в common? Добавлено @ 13:29 или я туплю..... Компилятор найдет их... это qmake ругается... правильно? Спасибо, что - то затупил... почитаю лучше асистента Это сообщение отредактировал(а) null56 - 3.2.2009, 13:30 |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
||||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Вроде заработало, но разыменовывать переменные, наверное надо как - то по другому
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Относительно путей вот нашел: http://www.mingw.org/wiki/IncludePathHOWTO
Попробуй так $${COMMON_PATH} |
|||
|
||||
| null56 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Да именно, работает ) По поводу относительных путей, статья хорошая... но у меня работает все с таким параметром
относительные пути вообще вещь такая опасная, нужно следить за текущей директорией, но для полной сборки своего проекта, я анписал на баше скрипт, который запускает мейки, предварительно, изменяя текущий рабочий каталог Спасибо большое за помощь |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |