Комментарии 15
Ну я сделал для себя шаблончик на мейке который build (в .exe) запускает скрипт (run) а так же deploy (Inno Setup например)
Если что, на питоне)
я мечтаю сделать компилятор проекта, образно файл lua в нем таблица - это титульник - титльник это имя проекта - его окружение, так вот, хочу писать в титульник все нюансы сборки по окружению, а файлик либо мой тоесть на каком-то ЯП, или sh будет его брать и готовить проект), а так пока использую просто sh)
Компилятор проекта? Странный термин. Обычно говорят компилятор какого-н языка программирования.
а так пока использую просто sh
sh всегда будет собирать всё.
А make только то, что было отредактировано с момента последнего вызова.
Это и есть главная причина появления make на фоне bash. Make смотрит, что поменялось и только это собирает.
вот пример окружения, может я путаюсь в понятиях, но сюда отдельной таблицей можно закинуть сами типы билдов, и написать мини-парсер
Скрытый текст

многое появление строк не станет неожиданностью, а будут из таблицы как и должны будут быть в будущем, если докодиться до будущего с бд)
более того таблица заставляет делать правильное именование читаемое
это что-то типо перфокарты проекта или манифеста(что где, какой нюанс или имя)
Попробуйте посмотреть на premake5. Кажется вы что-то такое описываете.
Попробуйте zig и его build.zig, возможно понравится
У кого-нибудь есть пример, как интегрировать в gnu make сборку precompiled header для gcc? Ну то есть нужно, чтоб во-1 зависимости инклуда, который предкомпилируется, прогенерились (по аналогии с тем, как можно автоматически генерить зависимости .c файлов от .h), а во-2 чтоб при изменении любого инклуда, от которого зависит precompiled header или при изменении его самого всё пересобиралось, в т.ч. зависимости.
Скорее всего, меня закидают тапками, но мне после прочтения статьи кажется, что смысла существования на текущий момент у Make не особо больше, чем у GCC - строго для очень специфических задач, потому что для другого есть лучше.
Достоинство make в том, что он пере собирает только те файлы , которые были изменены.Времена последней модификации, читаются от файловой системы.
Очень интересно, как это работает. Большинство современных языков программирования вообще собираются одной командой - по крайней мере, иное мне не встречалось - и в таком случае Make надо заменять собой компиляторы всех языков мира, и все это должно быть написано вручную.
А последнее вещь крайне сомнительная. Не отрицаю, что вычислять хеш каждого файла было бы несколько накладно, не говоря уже про то, чтобы хранить это, но очень много какие программы творят с датами дичь. Проводник Windows, например, при распаковке архивов время создания ставит на время распаковки. Это конкретно тут не особо навредит, просто первый пришедший в голову пример. По сути, один скрипт на Python, меняющий даты файлов на более старые, чем последняя сборка, и все сломано.
Универсальность это, конечно, хорошо, но многим ли нужна запускаемая из терминала сборка пассажирского авиалайнера без пересбора уже собранных (такая вот тавтология, уж извините) деталей, даже если предположить, что эта шайтан-программа магическим образом сможет обнаружить, какие детали уже сделаны?
Буду очень рада, если меня просветят, но пока что выглядит, что как GCC сборник компиляторов для архаичных языков (C/C++ разработчики, не в вашу сторону, я очень редко видела использование GCC для этих языков, обычно используется clang), так и это вещь для специфической задачи - компиляция для языков с очень старой архитектурой. Разумеется, моё мнение C#-огузка, которая ещё unsafe (почти) не нюхала, не является истиной в последней инстанции, но это как раз то, для чего у комментариев тоже есть комментарии.
Очень приятно на форумах по программированию читать комментарии с глаголами на (ла)
Если забить на гцц, то через несколько лет можно оказаться в той же ситуации что и с firefox vs хромой -- т.е. в корпоративном вендорлоке
Любопытный вброс ;) Надо понимать, в шарпе магический компилятор сам, без костылей умеет определять, в каком порядке билдить 1 000 000 файлов с исходниками. и 1 000 000 подсчётов хеша не занимает ни времени ни памяти ;)
Основы по GNU Make