Название: Очень много проектов... Отправлено: Гурман от Апрель 21, 2015, 15:28 Сейчас приложение состоит из 16 проектов - основной бинарник, и кучка плагинов. Но надо сделать еще 18 плагинов, каждый из которых состоит из 3-х динамических библиотек (одна библиотека сам плагин, и он подгружает ещё 2). Итого будет 70 проектов... :o И это еще не всё, поскольку надо будет делать еще несколько плагинов, общее число проектов может дорасти до 80.
С этим надо что-то делать, поскольку такие тополя становятся неуправляемыми. Особенно не нравится то, что по три проекта для каждого из 18 плагинов связаны друг с другом. Было бы здорово их создание собрать в один проект, хотя бы уменьшить общее число проектов до 34. Но я так понимаю, в рамках qmake это не возможно? Один .pro проект == один выходной файл, или я ошибаюсь? Некогда сейчас нырять в qmake и разбираться с ним (18 плагинов в очереди на реализацию стоят...), просьба если кто знает способ, как сделать генерацию 3-х выходных файлов (DLL) из одного проекта, расскажите. Название: Re: Очень много проектов... Отправлено: gil9red от Апрель 21, 2015, 15:35 Посмотрите формат pri, который в qmake используется.
А как набралось 70 проектов? 16 + 18 + ... = 70? Название: Re: Очень много проектов... Отправлено: Kurles от Апрель 21, 2015, 15:40 Создавай каждый проект как проект с подпроектами:
Код: TEMPLATE = subdirs Название: Re: Очень много проектов... Отправлено: Пантер от Апрель 21, 2015, 15:41 Use CMake, Luke.
Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 21, 2015, 16:19 А как набралось 70 проектов? 16 + 18 * 3 + ... > 70? Цитировать Посмотрите формат pri, который в qmake используется. pri это я как помню - project include, то есть, всё равно будут два файла pri к одному pro а хотелось бы, чтобы только 1 pro был для генерации 3-х dll каждого из 18 плагинов PS хотя это несколько облегчает - меньше закладок в окне Проекты у QtCreator, и в списке проектов вроде будет легче ориентироваться Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 21, 2015, 16:22 Создавай каждый проект как проект с подпроектами: Код: TEMPLATE = subdirs Но это же не избавляет от 3-х файлов .pro на каждый плагин? Название: Re: Очень много проектов... Отправлено: Kurles от Апрель 21, 2015, 16:24 Создавай каждый проект как проект с подпроектами: Код: TEMPLATE = subdirs Но это же не избавляет от 3-х файлов .pro на каждый плагин? Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 21, 2015, 16:26 Use CMake, Luke. Увы... поздно. 16 плагинов + 1 из 18-ти уже работают, а переходить на новых на CMake и иметь потом два разных формата проектов - это наверно еще муторнее будет. Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 21, 2015, 16:28 но это же не избавляет от 3-х файлов .pro на каждый плагин? Нет, но зато хоть как то структурирует каждый плагин.со структурированием особых проблем нет... проблема с количеством проектов - банально сложно ими в QtCreator оперировать Название: Re: Очень много проектов... Отправлено: Kurles от Апрель 21, 2015, 16:44 но это же не избавляет от 3-х файлов .pro на каждый плагин? Нет, но зато хоть как то структурирует каждый плагин.Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 21, 2015, 16:50 Хм. Что тогда изменит перенос трёх про файлов в один? В итоге же всё равно та же древовидная структура? Уменьшение количества закладок в странице Проекты у QtCreator. При переключении с режима Отладка на Релиз это надо делать в каждой закладке отдельно. Ну и список Проекты короче будет. Уже сейчас по нему лазить искать нужный файл довольно муторно, а там будет вообще нереально. Инкрементального поиска ведь нет. Название: Re: Очень много проектов... Отправлено: Kurles от Апрель 21, 2015, 16:57 Хм. Что тогда изменит перенос трёх про файлов в один? В итоге же всё равно та же древовидная структура? Уменьшение количества закладок в QtCreator. При переключении с режима Отладка на Релиз это надо делать в каждой закладке отдельно. Ну и список Проекты короче будет. Уже сейчас по нему лазить искать нужный файл довольно муторно, а там будет вообще нереально. Инкрементального поиска ведь нет. Код: TEMPLATE = subdirs Название: Re: Очень много проектов... Отправлено: kuzulis от Апрель 21, 2015, 18:14 Цитировать Use QBS, Luke. ;) А если серьезно - посмотри как сделано, к примеру в сорцах QtCreator (для простоты можно взять самую первую его версию v 1.0.0) и сделать по аналогии. Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 21, 2015, 23:34 При использовании Код: TEMPLATE = subdirs Что-то я не помню этого в используемом QtCreator 2.2.1. Менять его сейчас нельзя. Название: Re: Очень много проектов... Отправлено: Kurles от Апрель 22, 2015, 08:26 При использовании Код: TEMPLATE = subdirs Что-то я не помню этого в используемом QtCreator 2.2.1. Менять его сейчас нельзя. Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 22, 2015, 11:14 Хм. У меня в каталоге, который родительский для всех модулей проекта, лежит файл .pro с TEMPLATE = subdirs и т.д. от 2011 года, когда проект начинался. Почему-то я этот вариант тогда забросил - что-то не работало. Но тогда проектов был всего десяток. Придётся попробовать ещё раз.
Название: Re: Очень много проектов... Отправлено: Kurles от Апрель 22, 2015, 12:07 Хм. У меня в каталоге, который родительский для всех модулей проекта, лежит файл .pro с TEMPLATE = subdirs и т.д. от 2011 года, когда проект начинался. Почему-то я этот вариант тогда забросил - что-то не работало. Но тогда проектов был всего десяток. Придётся попробовать ещё раз. Надо просто этот про файл и открывать. Ну и в подпроектах так же TEMPLATE = subdirs использовать.Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 22, 2015, 12:48 Хм. У меня в каталоге, который родительский для всех модулей проекта, лежит файл .pro с TEMPLATE = subdirs и т.д. от 2011 года, когда проект начинался. Почему-то я этот вариант тогда забросил - что-то не работало. Но тогда проектов был всего десяток. Придётся попробовать ещё раз. Надо просто этот про файл и открывать. Ну и в подпроектах так же TEMPLATE = subdirs использовать.Не... я тогда его почему-то забросил. Что-то с ним было не так, что именно - разумеется не помню. Но у меня в QtCreator "последнее состояние" с тех пор всё равно открывало все проекты по-отдельности. Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 23, 2015, 00:06 Вроде получается, но возник такой вопрос - можно ли при использовании SUBDIRS передавать макро-имена из верхнего проекта в нижний? То есть, если у меня есть проект wx.pro со строками
TEMPLATE = SUBDIRS SUBDIRS = w ci_w ciw я могу в нём как-то определить переменную, например, OUTNAME = button и потом использовать её в проектах w.pro, ci_w.pro и ciw.pro? PS: не совсем получается. Сами подпроекты по-отдельности нормально собираются, но при сборке проекта - :-1: ошибка: Makefile.Debug: No such file or directory. Проект wbutton.pro выглядит так: TEMPLATE = SUBDIRS SUBDIRS = w ci_w ciw Структура в нём: Directory wbutton wbutton.pro <DIR> ciw <DIR> ci_w <DIR> w Directory wbutton\ciw ciw.pro ciw.h ciw.cpp Directory wbutton\ci_w ci_w.pro ci_w.c Directory wbutton\w w.pro w.h w.cpp w.png w.qrc Что не так? Название: Re: Очень много проектов... Отправлено: Kurles от Апрель 23, 2015, 10:23 Вроде получается, но возник такой вопрос - можно ли при использовании SUBDIRS передавать макро-имена из верхнего проекта в нижний? То есть, если у меня есть проект wx.pro со строками 1. скорее всего только через инклюды *.pri файлов или через создание .qmake.cache (сам не использовал этот метод, но видел, что он используется в QSerialPort, посмотри там)TEMPLATE = SUBDIRS SUBDIRS = w ci_w ciw я могу в нём как-то определить переменную, например, OUTNAME = button и потом использовать её в проектах w.pro, ci_w.pro и ciw.pro? PS: не совсем получается. Сами подпроекты по-отдельности нормально собираются, но при сборке проекта - :-1: ошибка: Makefile.Debug: No such file or directory. Проект wbutton.pro выглядит так: TEMPLATE = SUBDIRS SUBDIRS = w ci_w ciw Структура в нём: Directory wbutton wbutton.pro <DIR> ciw <DIR> ci_w <DIR> w Directory wbutton\ciw ciw.pro ciw.h ciw.cpp Directory wbutton\ci_w ci_w.pro ci_w.c Directory wbutton\w w.pro w.h w.cpp w.png w.qrc Что не так? 2. вроде всё так. Попробуй очистку сделать и заново qmake запустить. Название: Re: Очень много проектов... Отправлено: gil9red от Апрель 23, 2015, 10:30 С pri делал вот в этом проекте: https://github.com/gil9red/NotesManager/blob/master/NotesManager.pro
Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 23, 2015, 13:00 1. скорее всего только через инклюды *.pri файлов или через создание .qmake.cache (сам не использовал этот метод, но видел, что он используется в QSerialPort, посмотри там) 2. вроде всё так. Попробуй очистку сделать и заново qmake запустить. С .pri можно, но топорно... Или через переменные среды, но так еще хуже. Очистку делал, qmake перезапускал - не помогает ничего. Глухо ошибка при сборке верхнего проекта. Причем мгновенно, то есть, на верхнем уровне где-то, не в самих проектах. Вроде нашел, TEMPLATE = subdirs должно быть, регистр важен. Но спотыкается на файле заголовков, не находит его, хотя он точно имеется. Название: Re: Очень много проектов... Отправлено: Kurles от Апрель 23, 2015, 13:27 WARNING: Unable to generate output for: ......../wbutton-build-desktop//Makefile.Release [TEMPLATE SUBDIRS] WARNING: Unable to generate output for: ......../wbutton-build-desktop//Makefile.Debug [TEMPLATE SUBDIRS] Видимо из-за двойных слэшей, откуда он их взял? Нигде в настройках их не видно. Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 23, 2015, 13:39 Нет. Косяк в TEMPLATE = SUBDIRS, должно быть subdirs.
Вроде заработало... Во всяком случае проект с тремя подпроектами собрался. Теперь надо супер-проект сделать, который все проекты собирать будет. Название: Re: Очень много проектов... Отправлено: Igors от Апрель 24, 2015, 07:56 Теперь надо супер-проект сделать, который все проекты собирать будет. Иногда лучше главный (большой) проект держать одним, а вот все плагины/либы собрать в другом Название: Re: Очень много проектов... Отправлено: Гурман от Апрель 24, 2015, 11:47 Теперь надо супер-проект сделать, который все проекты собирать будет. Иногда лучше главный (большой) проект держать одним, а вот все плагины/либы собрать в другом Название: Re: Очень много проектов... Отправлено: Гурман от Май 15, 2015, 01:10 up
Во всей этой структуре, не работает один момент - почему-то при изменениях одного из хидеров, не пересобираются подпроекты, в которые он входит. Зависимости в проектах разумеется прописаны. Хидер лежит не в каталогах этих проектов, он лежит сбоку и является общим для подпроектов: В подпроектах написано: INCLUDEPATH += ../../max15 \ ../../Integrator SOURCES += \ w.cpp HEADERS += \ ../../max15/interface.h \ ../../Integrator/wcontrol.h \ w.h \ ../../Integrator/wcinculdes.h wcontrol.h включен в w.h, а w.h в w.cpp - во всех подпроектах этого уровня все имена w.h и w.cpp одинаковые, но содержимое разное Вот при изменении wcontrol.h подпроекты не собираются. И каждый раз при изменении wcontrol.h приходится полностью пересобирать все подпроекты, в которые он включен. Сейчас их 4, а будет 22... Они входят в главный суперпроект, который subirs. А его пересборка сейчас уже занимает 10 минут. Где собака порылась? Сообщений об ошибках в маршрутах нет, все файлы доступны. Название: Re: Очень много проектов... Отправлено: twp от Май 21, 2015, 13:16 В Qt4 это должно лечится так
Код: CONFIG *= depend_includepath Название: Re: Очень много проектов... Отправлено: Гурман от Май 21, 2015, 20:50 В Qt4 это должно лечится так Код: CONFIG *= depend_includepath О! Наконец-то... А что будет, если эта настройка останется при переходе на 5-ку? Название: Re: Очень много проектов... Отправлено: twp от Май 21, 2015, 22:08 О! Наконец-то... А что будет, если эта настройка останется при переходе на 5-ку? Ничего. Просто использование *= для установки в CONFIG исключает дублирование параметров, в отличие от +=. Но и в случае дублирование этого параметра тоже ничего страшного не будет. И единственное что может в корне поменять (и по сути сделать как в Qt4), так это удаление этого параметра: Код: CONFIG -= depend_includepath Название: Re: Очень много проектов... Отправлено: Гурман от Май 21, 2015, 22:27 Просто, если я буду переводить на 5-й, то могу к тому времени забыть про эту настройку.
Название: Re: Очень много проектов... Отправлено: twp от Май 21, 2015, 23:28 Ну пускай так и останется - мало-ли, вдруг в тестовых целях надо будет собирать и на четверке. Или в пятерке всплывут какие-то баги, которых не было и придется вернуться на четверку.
Название: Re: Очень много проектов... Отправлено: Гурман от Май 22, 2015, 00:30 Ну пускай так и останется - мало-ли, вдруг в тестовых целях надо будет собирать и на четверке. Или в пятерке всплывут какие-то баги, которых не было и придется вернуться на четверку. Если при сборке на 5-м эта настройка ни на что не повлияет - то да. |