Автоматическая сборка зависимостей |
Здравствуйте, гость ( Вход | Регистрация )
Автоматическая сборка зависимостей |
QCasper |
7.12.2009, 15:09
Сообщение
#11
|
Студент Группа: Участник Сообщений: 66 Регистрация: 26.11.2007 Пользователь №: 24 Спасибо сказали: 2 раз(а) Репутация: 1 |
|
|
|
frg10 |
7.12.2009, 15:38
Сообщение
#12
|
Студент Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: 2 |
Это, как я понял, работает следующим образом. Если изменился сам файл либы (не исходники) до при команде make для приложения, последнее будет пересобрано. Это решает половину задачи. Вторая половина подразумевает, что команда make для приложения инициирует также и сборку всех либ, от которых оно зависит. У меня проект тоже состоит из нескольких либ и приложения. И собирается ровно так, как хочется: собираются сначала все либы, потом приложение. Если только одна либа изменилась, то пересобирается только она и приложение. Структура проекта такая (названия подпроектов изменены):
В каталоге source лежит главный проектный файл source.pro. Содержимое примерно такое:
ordered говорит qmake-у чтобы проекты собирались именно в таком порядке. mainapp_bin.depends = lib1 lib2 - говорит что главное приложение зависит от либ Проекты либ не очень интересны, поэтому их не привожу. А проект главного приложения вот такой (несущественные части пропущены):
Если открыть проект в QtCreator, то откроются все подпроекты. Ну и из консоли все нормально собирается. |
|
|
QCasper |
7.12.2009, 15:41
Сообщение
#13
|
Студент Группа: Участник Сообщений: 66 Регистрация: 26.11.2007 Пользователь №: 24 Спасибо сказали: 2 раз(а) Репутация: 1 |
А, ну так вся фишка в "главном проектном файле". А если обойтись только проектом приложения и только проектом либ?
|
|
|
frg10 |
7.12.2009, 16:08
Сообщение
#14
|
Студент Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: 2 |
А, ну так вся фишка в "главном проектном файле". А если обойтись только проектом приложения и только проектом либ? ИМХО, никак не обойтись: как make должен узнать, что ваши либы и приложение вообще как-то связаны? Если несколько проектов связаны, то их нужно объединять. Это sln файлы в VisualStudio и subdirs проекты в Qt. |
|
|
QCasper |
7.12.2009, 16:26
Сообщение
#15
|
Студент Группа: Участник Сообщений: 66 Регистрация: 26.11.2007 Пользователь №: 24 Спасибо сказали: 2 раз(а) Репутация: 1 |
ИМХО, никак не обойтись: как make должен узнать, что ваши либы и приложение вообще как-то связаны? Если несколько проектов связаны, то их нужно объединять. Это sln файлы в VisualStudio и subdirs проекты в Qt. Ну почему нет. Ведь может же в файле проекта (.pro) приложения быть инструкция, которая, в свою очередь, запишет инструкцию в Makefile о том, что нужно пойти туда-то и там собрать. Вообще говоря, до последнего момента я думал, что механизм, описанный здесь, это и реализует. Но, как выяснилось - нет. А что он реализует, я так и не понял. И, кстати, тоже хотел об этом спросить сведующих людей. |
|
|
frg10 |
7.12.2009, 16:39
Сообщение
#16
|
Студент Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: 2 |
Ну почему нет. Ведь может же в файле проекта (.pro) приложения быть инструкция, которая, в свою очередь, запишет инструкцию в Makefile о том, что нужно пойти туда-то и там собрать. Вообще, subdirs проект это и делает. А по поводу "запишет инструкцию в Makefile" есть абзац о том, как добавлять в мэйкфайл свои таржеты: Customizing Makefile Output. Но только там все руками делать надо, а в случае subdirs qmake сам все сделает. |
|
|
QCasper |
7.12.2009, 16:48
Сообщение
#17
|
Студент Группа: Участник Сообщений: 66 Регистрация: 26.11.2007 Пользователь №: 24 Спасибо сказали: 2 раз(а) Репутация: 1 |
А по поводу "запишет инструкцию в Makefile" есть абзац о том, как добавлять в мэйкфайл свои таржеты: Customizing Makefile Output. Вот, Вы уже третий, кто меня туда посылает Но у меня никак не получается, на основе лежащей там информации, решить эту задачу. Поэтому я и стал просить готовые файлы проектов. |
|
|
Текстовая версия | Сейчас: 23.4.2024, 16:48 |