crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Автоматическая сборка зависимостей
QCasper
  опции профиля:
сообщение 6.12.2009, 18:01
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Есть один проект - статическая библиотека. Есть второй проект - исполняемый модуль. Модуль линкуется с библиотекой. Нужно, чтобы при запуске сборки модуля автоматически выполнялась сборка всех библиотек, от которых он зависит. На уровне файлов проекта естественно. То есть без всяких левых скриптов (это читай вручную опять же).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.12.2009, 18:23
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Смотри QMAKE_EXTRA_TARGETS тут
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 6.12.2009, 18:38
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 6.12.2009, 18:23) *
Смотри QMAKE_EXTRA_TARGETS тут


Там я смотрел, но у меня ничего не вышло. Буду очень принзнателен за готовый рабочий пример.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.12.2009, 18:46
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(QCasper @ 6.12.2009, 21:38) *
Буду очень принзнателен за готовый рабочий пример.
Ну на пустом месте больше чем в асистенте я вряд ли напишу, приведи пример, своих зависимостей.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 6.12.2009, 20:46
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 6.12.2009, 18:46) *
Ну на пустом месте больше чем в асистенте я вряд ли напишу, приведи пример, своих зависимостей.


Вот файл проекта приложения. Статическая библиотека - rsync.

!include( ../../../config.pri ) {
    error(Run configure before building)
}

TEMPLATE = app
TARGET = rsynctester
DESTDIR = $$BINDIR/tests/$$TARGET
OBJECTS_DIR = $$TMPDIR/tests/$$TARGET
MOC_DIR = $$TMPDIR/tests/$$TARGET
RCC_DIR = $$TMPDIR/tests/$$TARGET
LIBS += -L"$$LIBDIR" -lrsync
INCLUDEPATH += $$INCLUDEDIR
CONFIG += $$BUILD_CONFIGURATION
depends = rsync

QMAKE_EXTRA_TARGETS += rsync

exists(stable.h) {
    CONFIG += precompile_header
    PRECOMPILED_HEADER = stable.h
}

# Input
HEADERS += widget.h
SOURCES += main.cpp widget.cpp

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 7.12.2009, 14:09
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Неужели никто не сталкивался? Или все пересобирают, зависимое от статкилибы приложение, вручную при каждом изменении этой либы? Скиньте, пожайлуста, свой файл проекта, кому удалось таки автоматизировать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
frg10
  опции профиля:
сообщение 7.12.2009, 14:39
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 8.11.2009
Из: Ростов-на-Дону
Пользователь №: 1213

Спасибо сказали: 5 раз(а)




Репутация:   2  


Я для gcc под Linux делал так:

unix:MYLIBSDIR = ../../lib/unix-x86

LIBS  += -L$$MYLIBSDIR

unix {
    PRE_TARGETDEPS += $$MYLIBSDIR/libVisualization.a \
                      $$MYLIBSDIR/libTransforms.a
}


Плохо, конечно, что все либы приходится руками прописывать, но зато работает :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 7.12.2009, 14:50
Сообщение #8


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Я в Qt Creator работаю. Он позволяет галочками отметить проекты, от которых зависит текущий. Они в свою очередь могут зависеть от других проектов и т.д.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 7.12.2009, 14:57
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Это, как я понял, работает следующим образом. Если изменился сам файл либы (не исходники) до при команде make для приложения, последнее будет пересобрано. Это решает половину задачи. Вторая половина подразумевает, что команда make для приложения инициирует также и сборку всех либ, от которых оно зависит.

Но, в любом случае, за это тоже спасибо :)

Цитата(Kagami @ 7.12.2009, 14:50) *
Я в Qt Creator работаю. Он позволяет галочками отметить проекты, от которых зависит текущий. Они в свою очередь могут зависеть от других проектов и т.д.


Попробуйте следующее. Измените статиклибу, от которой зависит приложение и нажмите кнопку запуска. В результате у Вас либа пересоберётся, а приложение нет. В итоге изменений в запущенном приложении Вы не увидите. По крайней мере у меня не получилось. Галочку поставил. Qt Creator 1.3.0.

Впрочем, вкупе с вариантом, предложенным frg10, работать должно. Что само по себе уже неплохо.
Теперь бы вариант, работающий без Qt Creator, было бы совсем здорово :)

Сообщение отредактировал QCasper - 7.12.2009, 15:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 7.12.2009, 15:06
Сообщение #10


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Цитата(QCasper @ 7.12.2009, 14:57) *
Попробуйте следующее. Измените статиклибу, от которой зависит приложение и нажмите кнопку запуска. В результате у Вас либа пересоберётся, а приложение нет. В итоге изменений в запущенном приложении Вы не увидите. По крайней мере у меня не получилось. Галочку поставил. Qt Creator 1.3.0.

Для этого можно воспользоваться пунктом меню "Пересобрать все" :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.2.2020, 1:48