Russian Qt Forum
Апрель 20, 2024, 05:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Очень много проектов...  (Прочитано 15584 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #15 : Апрель 22, 2015, 11:14 »

Хм. У меня в каталоге, который родительский для всех модулей проекта, лежит файл .pro с TEMPLATE = subdirs и т.д. от 2011 года, когда проект начинался. Почему-то я этот вариант тогда забросил - что-то не работало. Но тогда проектов был всего десяток. Придётся попробовать ещё раз.
Записан

2^7-1 == 127, задумайтесь...
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #16 : Апрель 22, 2015, 12:07 »

Хм. У меня в каталоге, который родительский для всех модулей проекта, лежит файл .pro с TEMPLATE = subdirs и т.д. от 2011 года, когда проект начинался. Почему-то я этот вариант тогда забросил - что-то не работало. Но тогда проектов был всего десяток. Придётся попробовать ещё раз.
Надо просто этот про файл и открывать. Ну и в подпроектах так же TEMPLATE = subdirs использовать.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #17 : Апрель 22, 2015, 12:48 »

Хм. У меня в каталоге, который родительский для всех модулей проекта, лежит файл .pro с TEMPLATE = subdirs и т.д. от 2011 года, когда проект начинался. Почему-то я этот вариант тогда забросил - что-то не работало. Но тогда проектов был всего десяток. Придётся попробовать ещё раз.
Надо просто этот про файл и открывать. Ну и в подпроектах так же TEMPLATE = subdirs использовать.

Не... я тогда его почему-то забросил. Что-то с ним было не так, что именно - разумеется не помню. Но у меня в QtCreator "последнее состояние" с тех пор всё равно открывало все проекты по-отдельности.
Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #18 : Апрель 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

Что не так?
« Последнее редактирование: Апрель 23, 2015, 00:27 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #19 : Апрель 23, 2015, 10:23 »

Вроде получается, но возник такой вопрос - можно ли при использовании 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

Что не так?
1. скорее всего только через инклюды *.pri файлов или через создание .qmake.cache (сам не использовал этот метод, но видел, что он используется в QSerialPort, посмотри там)
2. вроде всё так. Попробуй очистку сделать и заново qmake запустить.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #20 : Апрель 23, 2015, 10:30 »

С pri делал вот в этом проекте: https://github.com/gil9red/NotesManager/blob/master/NotesManager.pro
Записан

Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #21 : Апрель 23, 2015, 13:00 »

1. скорее всего только через инклюды *.pri файлов или через создание .qmake.cache (сам не использовал этот метод, но видел, что он используется в QSerialPort, посмотри там)
2. вроде всё так. Попробуй очистку сделать и заново qmake запустить.

С .pri можно, но топорно... Или через переменные среды, но так еще хуже.

Очистку делал, qmake перезапускал - не помогает ничего. Глухо ошибка при сборке верхнего проекта. Причем мгновенно, то есть, на верхнем уровне где-то, не в самих проектах.

Вроде нашел, TEMPLATE = subdirs должно быть, регистр важен. Но спотыкается на файле заголовков, не находит его, хотя он точно имеется.
« Последнее редактирование: Апрель 23, 2015, 13:26 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #22 : Апрель 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]

Видимо из-за двойных слэшей, откуда он их взял? Нигде в настройках их не видно.
Может быть здесь?
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #23 : Апрель 23, 2015, 13:39 »

Нет. Косяк в TEMPLATE = SUBDIRS, должно быть subdirs.

Вроде заработало... Во всяком случае проект с тремя подпроектами собрался. Теперь надо супер-проект сделать, который все проекты собирать будет.
« Последнее редактирование: Апрель 23, 2015, 16:06 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Апрель 24, 2015, 07:56 »

Теперь надо супер-проект сделать, который все проекты собирать будет.
Иногда лучше главный (большой) проект держать одним, а вот все плагины/либы собрать в другом
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #25 : Апрель 24, 2015, 11:47 »

Теперь надо супер-проект сделать, который все проекты собирать будет.
Иногда лучше главный (большой) проект держать одним, а вот все плагины/либы собрать в другом
Иногда - наверно да. Но не в моем случае. "Главный проект" - это интегратор плагинов, всё приложение строится из них.
Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #26 : Май 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 минут.

Где собака порылась? Сообщений об ошибках в маршрутах нет, все файлы доступны.
Записан

2^7-1 == 127, задумайтесь...
twp
Гость
« Ответ #27 : Май 21, 2015, 13:16 »

В Qt4 это должно лечится так
Код:
CONFIG *= depend_includepath
А в пятерке эта опция вроде как по умолчанию
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #28 : Май 21, 2015, 20:50 »

В Qt4 это должно лечится так
Код:
CONFIG *= depend_includepath
А в пятерке эта опция вроде как по умолчанию

О! Наконец-то... А что будет, если эта настройка останется при переходе на 5-ку?
Записан

2^7-1 == 127, задумайтесь...
twp
Гость
« Ответ #29 : Май 21, 2015, 22:08 »

О! Наконец-то... А что будет, если эта настройка останется при переходе на 5-ку?

Ничего. Просто использование *= для установки в CONFIG исключает дублирование параметров, в отличие от +=. Но и в случае дублирование этого параметра тоже ничего страшного не будет. И единственное что может в корне поменять (и по сути сделать как в Qt4), так это удаление этого параметра:

Код:
CONFIG -= depend_includepath
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.077 секунд. Запросов: 22.