Russian Qt Forum
Март 29, 2024, 17:08
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
хранение бинарных зависимостей в кросс-платформенном проекте
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: хранение бинарных зависимостей в кросс-платформенном проекте (Прочитано 6248 раз)
kambala
Джедай : наставник для всех
Offline
Сообщений: 4725
хранение бинарных зависимостей в кросс-платформенном проекте
«
:
Июнь 01, 2019, 14:31 »
Здравствуйте. Есть небольшой С++ проект (использует qbs, если это поможет), который линкуется с внешней библиотекой, поставляемой в бинарном виде (ее изменения не интересуют). Естественно, файл библиотеки разный для разных платформ. Назрел вопрос как лучше хранить эти файлы.
1. просто сложить всё в репозиторий: не нравится, т.к. это просто раздутие репозитория «ненужными» файлами (пользователю винды не нужны файлы Макос и т.п.)
2. залить библиотеки куда-нибудь и скачивать нужную версию после клонирования репозитория/перед сборкой: придется писать скрипты скачивания для curl/wget/и т.д., насколько я понимаю.
3. git submodule? но это ничем не отличается от п. 1, насколько я понимаю, просто лежать будут в другой ветке/репозитории.
4. может поможет замена qbs на cmake, если в последнем есть встроенные средства скачивания?
5. ваш вариант
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3257
Re: хранение бинарных зависимостей в кросс-платформенном проекте
«
Ответ #1 :
Июнь 01, 2019, 15:20 »
Я лично противник того, чтобы система _сборки_ что-либо скачивала. Система _сборки_ должна собирать=) Хотя в Qbs есть такой
тикет
Желание запихнуть всё в одно место понятно, но порочно.
К примеру, деб-пакеты собираются при помощи debuild, который читает зависимости из файлика debian/control. По очевидным причинам, эти зависимости не подойдут для венды/макоси/рпм дистрибутива.
На одной из работ был написан питоновский скрипт, который читает yaml* файлик зависимостей и качает через питоновский curl пакеты и распаковывает их в папочку. Юзался он соответственно на маке/венде, на линуксе юзался нативный споосб через deb-пакеты.
Плюс такого подхода в том, что он работал с любой системой сборки (основных было две - cmake и qbs).
* файлик для примера:
Код:
name: foo
version: 0.0.0
desc: >
BarBaz
depends:
zlib: {dist: win32}
curl: {dist: win32}
libyaml:
zeromq3:
cmake:
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: хранение бинарных зависимостей в кросс-платформенном проекте
«
Ответ #2 :
Июнь 01, 2019, 19:25 »
пункты 1 и 3.
я бы попробовал 3. т.к что так что эдак, по-любому нужно эти бинари где-то хранить.. так какая разница где? ну будут они лежать на другом хосте... и чо? просто перед сборкой "вытаскиваешь" нужный сабмодуль и всЁ.
Записан
ArchLinux x86_64 / Win10 64 bit
kambala
Джедай : наставник для всех
Offline
Сообщений: 4725
Re: хранение бинарных зависимостей в кросс-платформенном проекте
«
Ответ #3 :
Июнь 04, 2019, 13:16 »
файл зависимостей и скрипт на питоне — это слишком много на данный момент, к тому же в винде нет питона по умолчанию
с submodule я сначала не подумал, что можно сделать по модулю на каждую платформу, и уже в qbs прописать какой модуль стягивать (вроде ж можно сказать гиту, чтоб по умолчанию не качал все доступные?). спасибо!
еще как вариант рассматривал что-то типа скрипта «если нет файла, скачать», который под виндой будет вызываться через PowerShell, а в остальных случаях через sh/curl.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: хранение бинарных зависимостей в кросс-платформенном проекте
«
Ответ #4 :
Июнь 07, 2019, 07:16 »
Судя по проектам на Гитхабе, народ делает каталог с исходниками программы, каталог distrib\ (и т.п.), а в нём подкаталоги по имени целевой платформы, в этих каталогах конфиги систем сборки свойственной для целевой платформы, ну и, видимо, эти системы сборки умеют докачать файлы библиотек и т.п.
Записан
Юра.
ksk-
Самовар
Offline
Сообщений: 178
Re: хранение бинарных зависимостей в кросс-платформенном проекте
«
Ответ #5 :
Июнь 07, 2019, 14:55 »
Выглядит так, будто бы тебе нужен менеджер пакетов. Попробуй Conan (
https://conan.io/index.html
).
Но раз бинарь меняться не будет, то лично я бы не парился и хранил всё просто в какой-нибудь папке "3rd-party", например (первый пункт).
Записан
ksk-
Самовар
Offline
Сообщений: 178
Re: хранение бинарных зависимостей в кросс-платформенном проекте
«
Ответ #6 :
Июнь 07, 2019, 14:57 »
Цитата: kambala от Июнь 01, 2019, 14:31
4. может поможет замена qbs на cmake
Это не будет лишним в любом случае. )
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: хранение бинарных зависимостей в кросс-платформенном проекте
«
Ответ #7 :
Июнь 08, 2019, 12:20 »
Цитата: ksk- от Июнь 07, 2019, 14:55
Выглядит так, будто бы тебе нужен менеджер пакетов. Попробуй Conan (
https://conan.io/index.html
).
Но раз бинарь меняться не будет, то лично я бы не парился и хранил всё просто в какой-нибудь папке "3rd-party", например (первый пункт).
+1
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4725
Re: хранение бинарных зависимостей в кросс-платформенном проекте
«
Ответ #8 :
Июнь 08, 2019, 23:08 »
нет, менеджер пакетов в данном случае не нужен
всем спасибо за ответы. воспользуюсь п. 1 как самым простым.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
zhbr
Гость
Re: хранение бинарных зависимостей в кросс-платформенном проекте
«
Ответ #9 :
Июнь 22, 2019, 06:13 »
У себя используем 1 и 3. вот пример подобного сабмодуля
https://bitbucket.org/planarllc/planar.tp.easy_profiler/wiki/Home
сабмодуль содержит в себе бинарники для всех необходимых ос и компиляторов. бинарники складываются в LFS.
в зависимом это этого сабмодуля проекте делаем include(<путь_к_директории_с_easy_profiler>/easy_profiler.pri). внутри pri-файла идёт разруливание - какие бинарники использовать в текущем окружении.
таким образом. клонирование происходит на этапе клонирования проекта, а не на этапе сборки. база git сама не пухнет, так как бинарные файлы в LFS. и да у нас qmake, а не qbs
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...