tag:blogger.com,1999:blog-654279083390275842.post5801027342113815600..comments2024-03-19T12:22:43.654+03:00Comments on Размышлизмы eao197: [prog.c++] Вероятно, проблема управления зависимостями в C++ не настолько проста, как может показатьсяeao197http://www.blogger.com/profile/17283739752119445290noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-654279083390275842.post-67443277713814083622020-02-11T15:35:54.966+03:002020-02-11T15:35:54.966+03:00@eao197
> Что-то как-то не очень попытка.
Да ...@eao197<br /><br />> Что-то как-то не очень попытка.<br /><br />Да я и не надеялся :)<br />Сергейhttps://www.blogger.com/profile/10973621537470546724noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-88046339265866034252020-02-11T15:02:16.688+03:002020-02-11T15:02:16.688+03:00@Сергей
> 1. bash/cmd тоже можно назвать систе...@Сергей<br /><br />> 1. bash/cmd тоже можно назвать системой сборки - из него можно вызывать make/nmake/build/ninja.<br /><br />Нет.<br /><br />> Ну или какой нибудь скрипт на одном из перечисленных шеллах.<br /><br />А вот скрипт можно. Поскольку управлять сборкой человек будет не с помощью bash/cmd вручную выдавая отдельные команды, а посредством этого самого скрипта.<br /><br />В точности так и происходит, когда пользователь работает с CMake.<br /><br />> Просто хотел подкорректировать тебя в терминах<br /><br />Что-то как-то не очень попытка.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-12135101254184604802020-02-11T14:55:57.195+03:002020-02-11T14:55:57.195+03:00@eao197
1. bash/cmd тоже можно назвать системой ...@eao197 <br /><br />1. bash/cmd тоже можно назвать системой сборки - из него можно вызывать make/nmake/build/ninja. Ну или какой нибудь скрипт на одном из перечисленных шеллах.<br /><br />2. Вообще не оскорбляет. Назови хоть преобразователем DSL в системы нативной сборки (ну или генератором). Сообственно мезон делает то же самое, только они не поддерживают make принципиально.<br /><br />3. Давно тут не был - но изменилось немногое :) Просто хотел подкорректировать тебя в терминах, ну и послушать твои мудрые слова.<br /><br />Сергейhttps://www.blogger.com/profile/10973621537470546724noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-23658182563389415362020-02-11T07:45:26.239+03:002020-02-11T07:45:26.239+03:00@Сергей
1. "никогда" закончилось после ...@Сергей<br /><br />1. "никогда" закончилось после того, как стало возможно делать "cmake --build ."<br /><br />2. Играть совесами не интересно. Если для "система сборки" в отношении CMake оскорбляет чье-то чувство справедливости, то можно обозвать CMake системой управления сборкой.<br /><br />3. Ничего из вышеперечисленного не может исправить ни врожденную уёбищность CMake, ни тонны наслоений известной субстанции, отложившихся на CMake за годы её пропихивания в мейнстрим.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-88605083780198197262020-02-10T23:07:39.835+03:002020-02-10T23:07:39.835+03:00Боюсь навлечь на себя гнев, но уебищныйна CMake не...Боюсь навлечь на себя гнев, но уебищныйна CMake не является системой сборки. И никогда ей не был :)Сергейhttps://www.blogger.com/profile/10973621537470546724noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-81574131476209079192020-02-10T12:44:37.638+03:002020-02-10T12:44:37.638+03:00>> Хотя лично я уже много лет придерживаюсь ...>> Хотя лично я уже много лет придерживаюсь именно такого подхода и во многих случаях, даже с зависимостями масштаба ACE, это работает более чем хорошо.<br /><br /> Да. Похоже это сейчас самый практичный способ управлять зависимостями.<br />Мы ещё пробуем иметь разные сборочные среды (с нужными версиями) в docker-контейнерах (чтоб в локальной системе не держать зоопарк). Но это не очень удобно для локальной разработки.<br /><br /><br />@Eugeniy<br />>> В меркуриале из коробки есть сабрепы<br /> В git это submodules или subtree как я понимаю.Pavel Vainermanhttps://www.blogger.com/profile/08533361760357862495noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-35345252931432217462020-02-10T11:51:25.746+03:002020-02-10T11:51:25.746+03:00@Pavel Vainerman
В среде C++ников далеко не всем ...@Pavel Vainerman<br /><br />В среде C++ников далеко не всем нравится иметь исходники сторонних компонентов прямо внутри своего проекта. Отчасти это определяется наличием монстроузных зависимостей типа Qt или Boost-а, сборка которых может затянутся на часы.<br /><br />Хотя лично я уже много лет придерживаюсь именно такого подхода и во многих случаях, даже с зависимостями масштаба ACE, это работает более чем хорошо.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-15925840822699165752020-02-10T11:44:19.476+03:002020-02-10T11:44:19.476+03:00В golang тоже инетерсно решили эти вопросы (тоже к...В golang тоже инетерсно решили эти вопросы (тоже как я понял не сразу, а относительно недавно).<br /><br />Проблема конкретных версий решается прописыванием версии для нужного модуля в go.mod<br />Проблема "исчезновения" публичных проектов, решается командой go mod vendor, которая скачивает все зависимости и раполагает их в катлоаг "vendor" (тут же в проекте). И вы становитесь независимы от внешних истояников. Сюда же можно размещать если надо свои какие-то private модули. Т.к. каталог vendor, это имеет приоритет при поиске зависимостей.<br />Проблема замены официальной версии на свою решается командой replace (в go.mod), где указывается, что вместо этого компонента использовать вот этот "отсюда".Pavel Vainermanhttps://www.blogger.com/profile/08533361760357862495noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-30195890060669263262020-02-09T21:47:51.475+03:002020-02-09T21:47:51.475+03:00Уже много лет практикую такой подход - на каждую з...Уже много лет практикую такой подход - на каждую зависимость делаю репозиторий у себя на сервере и засасываю в него ту версию исходников, которой пользуюсь. Выходит новая нужная мне версия - делаю новую ревизию. Надо что-то пропатчить - делаю свою ветку.<br /><br />В меркуриале из коробки есть сабрепы, они хорошо ложатся на такой стиль.Eugeniyhttps://www.blogger.com/profile/10354327694074617762noreply@blogger.com