Здравствуйте, гость ( Вход | Регистрация )
QCasper | Дата 7.12.2009, 16:48 |
А по поводу "запишет инструкцию в Makefile" есть абзац о том, как добавлять в мэйкфайл свои таржеты: Customizing Makefile Output. Вот, Вы уже третий, кто меня туда посылает Но у меня никак не получается, на основе лежащей там информации, решить эту задачу. Поэтому я и стал просить готовые файлы проектов. |
|
frg10 | Дата 7.12.2009, 16:39 |
Ну почему нет. Ведь может же в файле проекта (.pro) приложения быть инструкция, которая, в свою очередь, запишет инструкцию в Makefile о том, что нужно пойти туда-то и там собрать. Вообще, subdirs проект это и делает. А по поводу "запишет инструкцию в Makefile" есть абзац о том, как добавлять в мэйкфайл свои таржеты: Customizing Makefile Output. Но только там все руками делать надо, а в случае subdirs qmake сам все сделает. |
|
QCasper | Дата 7.12.2009, 16:26 |
ИМХО, никак не обойтись: как make должен узнать, что ваши либы и приложение вообще как-то связаны? Если несколько проектов связаны, то их нужно объединять. Это sln файлы в VisualStudio и subdirs проекты в Qt. Ну почему нет. Ведь может же в файле проекта (.pro) приложения быть инструкция, которая, в свою очередь, запишет инструкцию в Makefile о том, что нужно пойти туда-то и там собрать. Вообще говоря, до последнего момента я думал, что механизм, описанный здесь, это и реализует. Но, как выяснилось - нет. А что он реализует, я так и не понял. И, кстати, тоже хотел об этом спросить сведующих людей. |
|
frg10 | Дата 7.12.2009, 16:08 |
А, ну так вся фишка в "главном проектном файле". А если обойтись только проектом приложения и только проектом либ? ИМХО, никак не обойтись: как make должен узнать, что ваши либы и приложение вообще как-то связаны? Если несколько проектов связаны, то их нужно объединять. Это sln файлы в VisualStudio и subdirs проекты в Qt. |
|
QCasper | Дата 7.12.2009, 15:41 |
А, ну так вся фишка в "главном проектном файле". А если обойтись только проектом приложения и только проектом либ? | |
frg10 | Дата 7.12.2009, 15:38 |
Это, как я понял, работает следующим образом. Если изменился сам файл либы (не исходники) до при команде make для приложения, последнее будет пересобрано. Это решает половину задачи. Вторая половина подразумевает, что команда make для приложения инициирует также и сборку всех либ, от которых оно зависит. У меня проект тоже состоит из нескольких либ и приложения. И собирается ровно так, как хочется: собираются сначала все либы, потом приложение. Если только одна либа изменилась, то пересобирается только она и приложение. Структура проекта такая (названия подпроектов изменены):
В каталоге source лежит главный проектный файл source.pro. Содержимое примерно такое:
ordered говорит qmake-у чтобы проекты собирались именно в таком порядке. mainapp_bin.depends = lib1 lib2 - говорит что главное приложение зависит от либ Проекты либ не очень интересны, поэтому их не привожу. А проект главного приложения вот такой (несущественные части пропущены):
Если открыть проект в QtCreator, то откроются все подпроекты. Ну и из консоли все нормально собирается. |
|
QCasper | Дата 7.12.2009, 15:09 |
Для этого можно воспользоваться пунктом меню "Пересобрать все" Ну это конечно вариант, когда "всё" пересобирается за пару секунд. Но вот по 10 минут после каждого изменения ждать мне почему-то не хочется |
|
Kagami | Дата 7.12.2009, 15:06 |
Попробуйте следующее. Измените статиклибу, от которой зависит приложение и нажмите кнопку запуска. В результате у Вас либа пересоберётся, а приложение нет. В итоге изменений в запущенном приложении Вы не увидите. По крайней мере у меня не получилось. Галочку поставил. Qt Creator 1.3.0. Для этого можно воспользоваться пунктом меню "Пересобрать все" |
|
QCasper | Дата 7.12.2009, 14:57 |
Это, как я понял, работает следующим образом. Если изменился сам файл либы (не исходники) до при команде make для приложения, последнее будет пересобрано. Это решает половину задачи. Вторая половина подразумевает, что команда make для приложения инициирует также и сборку всех либ, от которых оно зависит. Но, в любом случае, за это тоже спасибо Я в Qt Creator работаю. Он позволяет галочками отметить проекты, от которых зависит текущий. Они в свою очередь могут зависеть от других проектов и т.д. Попробуйте следующее. Измените статиклибу, от которой зависит приложение и нажмите кнопку запуска. В результате у Вас либа пересоберётся, а приложение нет. В итоге изменений в запущенном приложении Вы не увидите. По крайней мере у меня не получилось. Галочку поставил. Qt Creator 1.3.0. Впрочем, вкупе с вариантом, предложенным frg10, работать должно. Что само по себе уже неплохо. Теперь бы вариант, работающий без Qt Creator, было бы совсем здорово |
|
Kagami | Дата 7.12.2009, 14:50 |
Я в Qt Creator работаю. Он позволяет галочками отметить проекты, от которых зависит текущий. Они в свою очередь могут зависеть от других проектов и т.д. | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 13:14 |