The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Релиз сборочной системы CMake 4.1.0 "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Релиз сборочной системы CMake 4.1.0 "  +/
Сообщение от opennews (??), 12-Авг-25, 10:34 
Представлен релиз кроссплатформенного открытого генератора сценариев сборки CMake 4.1.0, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=63713

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 12-Авг-25, 10:34   +12 +/
В каком интересно месте он "простой языка сценариев"? По-моему он давно примкнул к тем кого должен был заменить
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2, #4

2. Сообщение от Аноним (2), 12-Авг-25, 10:38   +6 +/
Тоже обратил внимание, что все альтернативы старому-доброму make почему-то сложнее и только продолжают бухнуть. Может конечно возможность выкачивать зависимости с гитхаба напрямую и есть хорошо, но вот эта вечная беготня с «да что перестроить уже, чтобы ты готовую либу всё же увидел» и жонглированием трудночитаемыми конфигами напрягает.
А сколько дыр через все эти навороченные системы сборки пролезает...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #3, #5, #11, #13

3. Сообщение от IMBird (ok), 12-Авг-25, 10:39   +6 +/
Крепитесь: всё чаще попадаются C/C++ проекты со сборочными скриптами на питоне.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #7, #8, #14

4. Сообщение от Аноним (7), 12-Авг-25, 10:41   –1 +/
А где ты там сложности вообще увидел? target_link_libraries не осилил?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #34

5. Сообщение от Аноним (7), 12-Авг-25, 10:43   +/
>все альтернативы старому-доброму make

Я тебе маленький секрет открою. На выходе cmake генерится старый добрый Makefile.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #12, #16, #33, #36, #50

6. Сообщение от Жироватт (ok), 12-Авг-25, 10:43   +3 +/
Интересно, как скоро
а) язык конфигурирования сборочной системы СМаке оформится как отдельный, полноценнный Тьюринг-полный язык,
б) для которого нужен будет свой язык конфигурирования сборки?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #21, #79

7. Сообщение от Аноним (7), 12-Авг-25, 10:46   +/
Так питон идеальный язык для быстрого написания скриптов. Разве не так? И да, meson открой для себя.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #10, #15

8. Сообщение от Аноним (2), 12-Авг-25, 10:46   +1 +/
А почему не на расте?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #24

10. Сообщение от Аноним (2), 12-Авг-25, 10:48   +1 +/
На мезоне сидят гтк, вяленд, системд и оригинальный ксорг, что как бы намекает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #59

11. Сообщение от Аноним (12), 12-Авг-25, 10:53   +/
> Тоже обратил внимание, что все альтернативы старому-доброму make

А make когда-то был системой сборки? 😂

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #78

12. Сообщение от Аноним (12), 12-Авг-25, 11:03   +5 +/
Да он CMake и не пользуется.

И наверняка вообще имеет условное отношение к разработке на C или C++, ибо собирать сколь-нибудь большой проект на этих языках при помощи голого make - это чистый мазохизм. Коллеги тебе этого тупо не дадут сделать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #26

13. Сообщение от Аноним (13), 12-Авг-25, 11:04   –1 +/
А не что тот факт, что cmake - это генератор Makefile'ов, т.е. аналог autotools. Makefile, cгенерированный cmake'ом, затем внезапно запускается в обычном make.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #18, #86

14. Сообщение от анонд (?), 12-Авг-25, 11:14   +/
и Lua (xmake с xrepo в китайских проектах)
Питон это Meson или Conan
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #62

15. Сообщение от анонд (?), 12-Авг-25, 11:15   +/
Версии сборочных системы не всегда совместимы как тотже Conan (1.x vs 2.x) в отличие от CMake
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

16. Сообщение от анонд (?), 12-Авг-25, 11:16   +1 +/
CMake использует Ninja (когда доступно)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

17. Сообщение от anon57email (?), 12-Авг-25, 11:16   +2 +/
На работе, в основных проектах, был выбран CMake. Периодически приходиться нырять в эту чертовщину и чинить. Хорошо хоть появились форки CMake с поддержкой отладки.
Для домашних проектов использую premake5. С версии 5-beta6 появился API для управления зависимостями примерно как в CMake. Теперь можно описать как использовать либу, а потом просто воткнуть в проекте uses 'SDL3' и нужные опции прокидываются. Тут если что почитать можно: https://premake.github.io/docs/Usages-and-Uses

Короче CMake не нужен, закапывайте.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #27, #42

18. Сообщение от анонд (?), 12-Авг-25, 11:17   +2 +/
CMake поддерживает несколько генераторов. Ninja намного производительнее чем Make
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #29

19. Сообщение от анонд (?), 12-Авг-25, 11:18   +2 +/
Все используют CMake, но писать на этом языке никто не хочет
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #43

21. Сообщение от Аноним (21), 12-Авг-25, 11:30   +1 +/
так CMake уже Тьюринг-полный и скрипты можно запускать не в режиме сборки, а в режиме интерпретации через ключ -P
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

22. Сообщение от Аноним (22), 12-Авг-25, 12:08   +1 +/
Беда почти всех яп - чтобы собрать программу, надо выучить ещё один язык. Хорошо, что я сборщики себе на сях свои пишу.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #23, #32, #47

23. Сообщение от Аноним (23), 12-Авг-25, 12:14   –1 +/
что мешает писать все в одном файле? :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #25

24. Сообщение от Аноним (24), 12-Авг-25, 12:14   +/
> А почему не на расте?

Угадай с трех раз, на чем пишутся сборочные скрипты для проектов на расте ...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #30

25. Сообщение от Аноним (-), 12-Авг-25, 12:42   –1 +/
Нужно умещать весь код в один экран, как это делает создатель языка K.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #38

26. Сообщение от Аноним (26), 12-Авг-25, 12:45   –1 +/
Эти коллеги в вкусно-и-точка скоро работать уйдут, т.к. иишка всех лоускилов выкидывает уже с рынка. Я вот стартап пилю и там только Make, т.к. это мегаудобно все вспомогательные действия держать в 1 месте а не плодить кучу мелких скриптов. И действия - любые, а не только предусмотренные авторами смаке. И качать зависимости можно хоть с гитхуба хоть откуда прозрачным способом и билдить их какой угодно сторонней системой сборки, просто сделав соответсвующий таргет. При этом собственно сборка всех с/с++ файлов проекта - 7 строк.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #28

27. Сообщение от Аноним (12), 12-Авг-25, 12:49   +1 +/
> С версии 5-beta6 появился API для управления зависимостями примерно как в CMake.
> нужные опции прокидываются
> Короче CMake не нужен, закапывайте

То есть недавно в бета-версии premake появилась опция, которая доступна в CMake уже лет 20? Уже бегу закапывать CMake!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

28. Сообщение от Аноним (12), 12-Авг-25, 13:00   +2 +/
> Эти коллеги в вкусно-и-точка скоро работать уйдут
> Я вот стартап пилю

Ну, то есть, на мороз пока выкинули только тебя. 😂 Стартап, лол...

> все вспомогательные действия держать в 1 месте а не плодить кучу мелких скриптов

И весь исходный код тоже в одном файле, надеюсь? 😂 Хотя, когда у тебя хэллоуворлд - это не проблема, так ведь?

> И действия - любые, а не только предусмотренные авторами смаке

А, ну понятно: еще один эксперт, который CMake в глаза не видел, рассказывает об его ограничениях. 🤦

> И качать зависимости можно хоть с гитхуба хоть откуда прозрачным способом и билдить их какой угодно сторонней системой сборки, просто сделав соответсвующий таргет. При этом собственно сборка всех с/с++ файлов проекта - 7 строк.

Ты не поверишь, но в CMake тоже так 🤯. Только вот работать оно будет на всех системах (даже Винде), а не только в юниксовом окружении.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #31

29. Сообщение от Аноним (26), 12-Авг-25, 13:06   –3 +/
> Ninja намного производительнее чем Make

Это миф. Ninja просто запускает подготовленные кем-то (basel например) команды из compile_commands.json.
1. если в makefile просто засунуть список этих команд, без вычисления зависимостей, то отработает за +- то же время, но так люди не делают, т.к. не читаемо.
2. ninja отрабатывает после генератора этого compile_commands.json и если сложить время, то оно будет больше чем у нормального человеческого Makefile из нескольких строчек.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #35, #39

30. Сообщение от Советский инженер (ok), 12-Авг-25, 13:12   +/
что там гадать.
toml & rust (build.rs)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

31. Сообщение от Аноним (26), 12-Авг-25, 13:13   –2 +/
Ну каг бе стратап зарабатывает уже неплохо, есть некоторый штат сотрудников, а я за CTO. Я заранее подготовился, а кого-то вот ждёт неприятный сюрприз. Кусочки кода, которые узко смотрящие кодеры могут писать, давно уже нейронка делает.

> эксперт, который CMake в глаза не видел

15 лет в IT за деньги, а так ещё больше.

> даже Винде

А мне не надо чтобы на венде работало (но там вообще-то есть линукс окружение и собрать можно если не лоускил или хотя бы дипсик осилил).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #37

32. Сообщение от trolleybus (?), 12-Авг-25, 13:14   +/
Rust с build.rs нервно курит в сторонке... Хотя, о чем это я. Для экспертов опеннета раст - не язык.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #51

33. Сообщение от Советский инженер (ok), 12-Авг-25, 13:17   +3 +/
я тебе маленький секрет открою.
СMake никогда не был альтернативой make.
СMake стартанул как альтернатива autotools.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

34. Сообщение от Аноним (34), 12-Авг-25, 13:19   +2 +/
В прошлый раз тут советовали писать тесты для оператора if, потому что по меркам CMake это сложная логика с проблемным легаси ("The if command was written very early in CMake's history..."), которое решили не чинить.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #41

35. Сообщение от Советский инженер (ok), 12-Авг-25, 13:20   +4 +/
> ... команды из compile_commands.json

🤣🤣🤣

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

36. Сообщение от Аноним (36), 12-Авг-25, 13:21   +/
Согласен

cmake ./
make

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

37. Сообщение от Аноним (12), 12-Авг-25, 13:24   +1 +/
> есть некоторый штат сотрудников, а я за CTO

Ты уж определись, СТО ты или кодер-писатель make. 😂

> 15 лет в IT за деньги, а так ещё больше

Жаль, что не на позиции разработчика. 😂 А то в любом серьезном проекте ты за ручное написание make получил бы по шапке уже в первый месяц. 🤣

> А мне не надо чтобы на венде работало

Да я и не сомневался. Только вот тем, кому это надо - используют CMake.

> но там вообще-то есть линукс окружение и собрать можно если не лоускил или хотя бы дипсик осилил

Тебе об этом тот самый Дипсик сказал? Спроси его заодно, зачем мне там на Винде "линукс окружение", если проект собирается с msvc.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #44, #69

38. Сообщение от Аноним (23), 12-Авг-25, 13:25   +1 +/
забыл совсем, у вас там скрол не работает в терминале :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

39. Сообщение от Аноним (12), 12-Авг-25, 13:30   +2 +/
>> Ninja намного производительнее чем Make
> Это миф. Ninja просто запускает подготовленные кем-то (basel например) команды из compile_commands.json.

Вот такие вот истории со срывами покровов получаются, когда стартапного СТО познакомить с DeepSeek... 🤦

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #40

40. Сообщение от Аноним (26), 12-Авг-25, 13:41   –1 +/
Чатик мне запилил так-то рабочий скрипт для конвертации мезон либ в тупо папку в проекте с исходниками парсингом compile_commands.json, так что я в курсе, как это работает. Makefile в отличие от cmake не требует указывать каждый C/C++ файл (тот так может но криво и ломается так сборка постоянно, поэтому у смачников сизифов труд по добавлению каждого с файла в смаке). Т.к. мне не нужно иметь кучу раздутых so всё собирается статически с едиными флагами в компактный бинарь.
И да, я использую генерацию кода - и что вы мне сделаете) Раздутый штат кодеров больше компаниям не нужон.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #48

41. Сообщение от Аноним (7), 12-Авг-25, 13:43   +/
Не знаю, кто там тебе и чего советовал, но проект на cmake накинуть можно за пару минут.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

42. Сообщение от Аноним (7), 12-Авг-25, 13:44   +2 +/
>в основных проектах
>нырять в эту чертовщину и чинить

Наверное тут надо команду разработи менять, а не cmake.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #58, #93

43. Сообщение от Аноним (7), 12-Авг-25, 13:48   +/
Я тебя может удивлю, но пользователи cmake даже не используют. Только мейнтейнеры и изредка программисты.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

44. Сообщение от Аноним (26), 12-Авг-25, 13:58   +/
> Ты уж определись, СТО ты или кодер-писатель make.

Тут некоторые жалуются мол синтаксис непонятный. Чатик всё напишет если что-то нетривиальное нужно. Лычку мастера мейкфайлов иметь не обязательно, достаточно иметь положительный iq. А так я много чё делаю, RnD всякое, деплой, настройка системы, оптимизация нейросетевых моделек - не только код пишу. Поэтому make как инструмент автоматизации не только лишь сборки - мастхэв.

> если проект собирается с msvc

Кто в здравом уме в 2к25 будет планировать стартап под венду? Либо под мак писать надо, т.к. деньги там, либо веб, котороый на линукс / wasm кругом, либо хардварный стартап с прошивками - там опять же msvc ненужон. Везде Make как родной. Если игру делать - то они все на готовых движках со своими билд системами.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #70

45. Сообщение от Аноним (45), 12-Авг-25, 14:02   +/
Кто-нибудь пробовал системы сборки meson или bazel?
Ответить | Правка | Наверх | Cообщить модератору

46. Сообщение от Аноним (45), 12-Авг-25, 14:08   +/
Зависимости cmake весят больше программы в несколько раз. Прикольно, че.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #52, #56

47. Сообщение от Аноним (47), 12-Авг-25, 14:10   +/
а в чем проблема писать так чтобы одного языка хватало?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #81

48. Сообщение от Аноним (12), 12-Авг-25, 14:13   +/
> рабочий скрипт для конвертации мезон либ в тупо папку в проекте с исходниками парсингом compile_commands.json

Попроси чатик объяснит смысл этого набора случайных слов, ибо я лично распарсить его не смог.

> Makefile в отличие от cmake не требует указывать каждый C/C++ фай

CMake тоже не требует. Спроси у своего чатика о CONFIGURE_DEPENDS.

> Т.к. мне не нужно иметь кучу раздутых so всё собирается статически с едиными флагами

Ага, все сторонние либы, да еще и C с C++ вперемешку - с едиными флагами? 😂 Ну сказано же: мастер хэллоуворлдов, реальных кодовых баз в глаза не видавший.

> И да, я использую генерацию кода - и что вы мне сделаете)

Проявим сочувствие. Ну, насколько это возможно к "стартапному СЕО, по совместительству писателю мейкфайлов при помощи DeepSeek" 🤣

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #40 Ответы: #49

49. Сообщение от Аноним (26), 12-Авг-25, 14:24   –2 +/
> я лично распарсить его не смог

Не мудрено для i shaped специалиста по смаке. Поясняю - берётся мезон либа, указываются нужные флаги, мезон генерит compile_commands, скипт на питоне достаёт оттуда пути к собираемым файлам, фиксит корявые пути к инклудам и кладёт с/с++/h файлы в отдельную папочку внутри Makefile проекта. Всё, больше мезон не нужен.

> C с C++ вперемешку - с едиными флагами?

Да, прикинь? Проект на C/C++ с едиными флагами (кроме версии стандарта языка разве что, это включено в CC/CXX переменную)

app: $(patsubst %.cpp,build/%.cpp.o,$(SRC_CPP)) $(patsubst %.c,build/%.c.o,$(SRC_C))
    $(CXX) $^ $(LFLAGS) -o app

build/%.c.o: %.c
    $(CC) $(CFLAGS) -I$(dir $<) -MD -c $< -o $@

build/%.cpp.o: %.cpp
    $(CXX) $(CFLAGS) -I$(dir $<) -MD -c $< -o $@

-include $(patsubst %.cpp,build/%.d,$(SRC_CPP)) $(patsubst %.c,build/%.d,$(SRC_C))

И всё! Надо будет - добавлю go / swift / что угодно компилируемое.

> Проявим сочувствие

Учитесь, пока не поздно) Либо правильному промптингу нейронок, либо котлету на булку класть)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48 Ответы: #53, #65

50. Сообщение от Аноним (50), 12-Авг-25, 14:31   +/
Давно уже генерится ninja. Потому что make не умеет не только в конфигурацию проекта, но и в собственно сборку.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #61

51. Сообщение от Аноним (50), 12-Авг-25, 14:34   +/
build.rs нужен в одном крейте из ста. Для обычной сборки обычного проекта на rust (с зависимостями, естественно) вообще ни строчки сборочной системы написать не надо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

52. Сообщение от нах. (?), 12-Авг-25, 14:42   +/
смешнее то что куча из них (к счастью, не все - обязательные) давно сами без cmake не собираются.

(поэтому у вас и не будет больше ни одной нормальной ос после линукса и венды)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #54, #57

53. Сообщение от Аноним (12), 12-Авг-25, 14:52   +/
> Поясняю - берётся мезон либа, указываются нужные флаги, мезон генерит compile_commands, скипт на питоне достаёт оттуда пути к собираемым файлам, фиксит корявые пути к инклудам и кладёт с/с++/h файлы в отдельную папочку внутри Makefile проекта. Всё, больше мезон не нужен.

Т.е. из человеческого, поддерживаемого Meson файла ты сделал write-only портянку make на выброс, с прибитыми гвоздями инклюдами и по пути угрохав даже *внутренние для либы* флаги компиляции? 😂

Не, ну это гениально! Вот оно - последствие влияния нейронок на неокрепшие умы вайтишников. Вайб-кодерам хоть простительно - они в код не смотрят, а тут...

> Да, прикинь? Проект на C/C++ с едиными флагами (кроме версии стандарта языка разве что, это включено в CC/CXX переменную)

"Прикинь 😧" у тебя будет, когда ты прекратишь сочинять находу и действительно попробуешь таким подходом скомпилировать что-то больше своего хэллоуворлда. И в тот же самый момент до тебя дойдет, зачем нужны билд-системы. даже в пределах одного окружения.

> I$(dir $<) -MD -c $< -o $@
> И всё!

Апхапхах! "И все!" А эти все глупцы десятилетиями Автомейки с Симейками зачем-то придумывают. Узрите, несчастные, как стартапный СТО заменил все ваши поделия одним заклинанием make!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #67

54. Сообщение от Аноним (54), 12-Авг-25, 15:06   +1 +/
Ну GCC вот тоже без GCC не собирается, и что?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52 Ответы: #60, #64, #77

56. Сообщение от НеФанат (?), 12-Авг-25, 15:08   +/
Используй для таких программ обычный make
Смотри: https://www.opennet.me/openforum/vsluhforumID3/137560.html#49
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

57. Сообщение от Аноним (45), 12-Авг-25, 15:15   +/
"Это какой-то позор..." (с)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52

58. Сообщение от Аноним (12), 12-Авг-25, 15:15   +2 +/
> Наверное тут надо команду разработи менять, а не cmake.

Упонминание в комментарии "uses 'SDL3'" говорит о том, что "комнда" состоит лишь из него самого, пишущего для себя игрушки.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

59. Сообщение от ryoken (ok), 12-Авг-25, 15:16   +/
У мну в генте по-моему все эти сборочные системы есть. Точно видел cmake, meson, ninja ,%SUBJ% и может еще кого-то. Но особо внимания не обращал, т.к. после запуска  emerge @world обычно иду спать :).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

60. Сообщение от Аноним (12), 12-Авг-25, 15:17   +/
А это очень неудобный вопрос!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54 Ответы: #63

61. Сообщение от Аноним (61), 12-Авг-25, 15:18   +/
Мне make не нравится своими тонкостями, которые необходимо помнить. Но вот что бы он в сборку не умел. Я чего то не знаю - получается. Что за проблемы у make со сборкой?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

62. Сообщение от IMBird (ok), 12-Авг-25, 15:18   +1 +/
Большое спасибо, я посмотрел и проникся. Даже FPC поддерживает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

63. Сообщение от Аноним (23), 12-Авг-25, 15:28   +/
Там вопрос не сформируется - рекурсия бесконечная.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60

64. Сообщение от нах. (?), 12-Авг-25, 15:28   +/
вообще-то до недавнего времени собирался - причем чем-то уровня чуть ли не tinyc. Если даже поломали - ты все еще можешь им собрать 2.7.2 и последовательно доапгрейдиться до какой там тебе нужен для хеловротов.

Именно благодаря этому у нас есть линукс. Потому что кросскомпилятором ты бы до сих пор что-то вроде хурда собирал.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54 Ответы: #71, #72

65. Сообщение от нах. (?), 12-Авг-25, 15:33   +/
> build/%.c.o: %.c

ну сразу приехали. Ты просохатил зависимости от .h
Про то что это фу-фу-фу gnu make only уж не будем (этот, хотя бы, все еще собирается в любой  мыслимой и части немыслимых сред, где хотя бы есть posix shell и не очень безнадежно старый gcc)

то есть для одноразовой поделки прокатит, для своего проекта уже непригодно сходу.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #68

66. Сообщение от Аноним (-), 12-Авг-25, 15:36   +/
Автор забыл упомянуть, что CMake - это инструмент для тех, кто программирует на C++.
Ответить | Правка | Наверх | Cообщить модератору

67. Сообщение от Аноним (67), 12-Авг-25, 15:50   +/
> Т.е. из человеческого, поддерживаемого Meson файла

Наоборот же мезон мне поддерживать не нужно а либу нужно было допилить поэтому удобнее всё в единой системе сборки держать. Пересобирать либу снаружи проекта через мезон и дольше и неудобнее чем используя инкрементальную пересборку Make проекта.

> прибитыми гвоздями инклюдами

А инклюды как раз из хрен пойми каких путей преобразуются просто в путь к папке этой либы в проекте как и для всех остальных модулей. Поэтому инклуды разных модулей мне не нужно указывать в общих флагах.

> write-only портянку make на выброс

7 строк всего для сборки C/C++, переиспользую из проекта в проект. Типичная мезон/смаке портянка куда больше т.к. в смаке каждый исходный файл проекта перечисляют.

> стартапный СТО

Сам-то чего добился ?)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53

68. Сообщение от Аноним (67), 12-Авг-25, 15:53   +/
Нет они учтены в -include $(patsubst %.cpp,build/%.d,$(SRC_CPP)) $(patsubst %.c,build/%.d,$(SRC_C))

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65 Ответы: #85

69. Сообщение от Аноним (70), 12-Авг-25, 15:55   +/
>за ручное написание make получил бы по шапке уже в первый месяц

А разве уже не достаточно?
cmake
cmake --build
cmake --install

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37

70. Сообщение от Аноним (70), 12-Авг-25, 15:55   +/
>Если игру делать - то они все на готовых движках со своими билд системами.

Не знаю, у меня что сборка исходников, что уровней, что моделей, всё в батниках с компиляторами.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

71. Сообщение от Аноним (54), 12-Авг-25, 16:00   +/
> Если даже поломали - ты все еще можешь им собрать 2.7.2 и последовательно доапгрейдиться до какой там тебе нужен для хеловротов.

Полагаю, с CMake можно поступить так же.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64 Ответы: #84

72. Сообщение от Аноним (12), 12-Авг-25, 16:31   +/
> вообще-то до недавнего времени собирался - причем чем-то уровня чуть ли не tinyc

Лол, какой еще tinyc? 😂 С версии 4.8 (2013 год) GCC написан на C++.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64 Ответы: #82

73. Сообщение от nc (ok), 12-Авг-25, 16:39   +/
Для винды пользуюсь штатными *.vcxproj Студии и всё устраивает.
Для линукса пользуюсь штатными *.pro QtCreator'а и всё устраивает.
Все эти сборочные скрипты (make, cmake и т.п., тысячи их)... ни разу в жизни не понадобились, исключая только компиляцию исходников скачанных из инета. И то нередко такое бывает что скачаешь, а оно не компилируется.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #75, #94

75. Сообщение от Аноним (12), 12-Авг-25, 16:59   +/
> Для винды пользуюсь штатными *.vcxproj Студии и всё устраивает.
> Для линукса пользуюсь штатными *.pro QtCreator'а и всё устраивает.

Ну а мог бы один раз под обе платформы написать CMkae файл. Ну и да, под Линуксом и Маком далеко не все проекты юзают QtCreator (именно для сборки).

> Все эти сборочные скрипты (make, cmake и т.п., тысячи их)... ни разу в жизни не понадобились

Это ровно до того момента, когда сборка проекта подразумевает что-то помимо компиляции C++ кода (т.е. когда у проекта кроме исполняемого есть и другие файлы). Вот тут на помощь как раз и приходят CMake и подобные, которые позволяют написать *всю* логику сборки один раз и под все платформы. Да, это логика все равно на опеределенный процент может быть специфичной для платформы, но главное что оставшаяся большая часть не дублируется в двух разных ".sh", ".bat" и т.п., да и сам "скрипт" является частью системы (и процесса) сборки.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73

77. Сообщение от Аноним (77), 12-Авг-25, 17:12   +/
даже больше, современному gcc нужен питон
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54 Ответы: #83

78. Сообщение от _ (??), 12-Авг-25, 17:29   +1 +/
А что - когда то не был? O'Riley :-?
:)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

79. Сообщение от Аноним (79), 12-Авг-25, 17:47   +/
а) уже
б) Bazel. Нормальный высокоуровневый почти-пайтон, который CMake может генерить. Мы используем.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

81. Сообщение от _ (??), 12-Авг-25, 17:49   +/
В том что одного не хватает?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47 Ответы: #87

82. Сообщение от нах. (?), 12-Авг-25, 17:51   +/
значит, соберешь сперва 4.7
(Если тебе прям уперлось для твоей болгеносы наираспоследнюю версию компилятора)
это всяко попроще чем пытаться портировать наираспоследний компилятор на ос в которой еще ничего нет потому что нет компилятора.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72

83. Сообщение от нах. (?), 12-Авг-25, 17:53   +/
> даже больше, современному gcc нужен питон

ну я собственно и говорил - повторить линукс не получится. Потому что "нужен пихон" а потом по зависимостям еще и хруст приедет. Со всеми тремя своими поддерживаемыми платформами - виндой, виндой, и еще, вот...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77

84. Сообщение от нах. (?), 12-Авг-25, 17:56   +/
>> Если даже поломали - ты все еще можешь им собрать 2.7.2 и последовательно доапгрейдиться до какой там тебе нужен для хеловротов.
> Полагаю, с CMake можно поступить так же.

нет, конечно. Потому что мильен зависимостей и пяток из них сами требуют cmake. Причем гвоздем прибита конкретная наираспоследняя версия (обычно если ее понизить этак на пяток ничего не ломается, но мы про новую ос а не портирование на freebsd7)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71 Ответы: #89

85. Сообщение от нах. (?), 12-Авг-25, 17:58   +/
> Нет они учтены в -include $(patsubst %.cpp,build/%.d

И кто вот это всьо генерить должен - руками каждый .h добавляешь, что-ли?

make dep не просто так был придуман в auto* подходе.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68 Ответы: #88

86. Сообщение от нах. (?), 12-Авг-25, 18:02   –1 +/
> А не что тот факт, что cmake - это генератор Makefile'ов, т.е.
> аналог autotools.

ни разу не, потому что autotools - генератор _генератора_ мэйкфалов.

> Makefile, cгенерированный cmake'ом, затем внезапно запускается в обычном
> make.

но только на той системе и только в той единственной конфигурации где был произведен.
А configure сгенерит тебе мэйкфайлы на ЛЮБОЙ поддерживаемой системе, с учетом твоих личных пожеланий. БЕЗ autotools. Они нужны только автору. И то не каждый день.

Просто выросло поколение не умеющих ими пользоваться и не понимающее зачем оно вообще надо. (ни разу не для генерации мэйкфайлов было задумано)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #91, #92

87. Сообщение от Аноним (-), 12-Авг-25, 18:08    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81

88. Сообщение от Аноним (26), 12-Авг-25, 18:15   +/
GCC сам же и генерит d файлы, в которых в понятном мейку виде лежат зависимости от h файлов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85

89. Сообщение от Аноним (54), 12-Авг-25, 18:25   +/
Так начиная со старой же.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84

90. Сообщение от Аноним (90), 12-Авг-25, 18:28   +/
Никогда не понимал тех, кто билдит под линух и избегает мейк, если проект по сложности не ядро, то использование чего-то отличного от классического мейка неоправдано.
Это банальное неуважение к тем, кто возможно будет работать над такими проктами - порой доходит до абсурда - проект по сложности хеловрот какой нибудь, однако уже сборочного мусора натащено немало.
Ответить | Правка | Наверх | Cообщить модератору

91. Сообщение от Аноним (91), 12-Авг-25, 18:40   +/
>> Makefile, cгенерированный cmake'ом, затем внезапно запускается в обычном make.
> но только на той системе и только в той единственной конфигурации где был произведен.

Ну да, в этом весь смысл. Кроссплатформенным инструментом является cmake, а не его выхлоп.

Или ты хочешь  сказать, что в сценарии:

> configure сгенерит тебе мэйкфайлы на ЛЮБОЙ поддерживаемой системе

...получившийся Makefile будет работать не "только на той системе и только в той единственной конфигурации где был произведен"?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86

92. Сообщение от Аноним (91), 12-Авг-25, 18:46   +/
> Просто выросло поколение не умеющих ими пользоваться и не понимающее зачем оно вообще надо

Так а действительно: зачем вообще надо использовать древний копролит из нагромождения Shell, Perl и M4, намертво прибитый к Unix-окружению и применяющийся сугубо в опенсорсном легаси?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86

93. Сообщение от Аноним (93), 12-Авг-25, 18:59   +/
явно ничего сложнее на cmake чем хелоу ворд не делал, cmake когда тянешь кучу blas, mkl или прочего сразу затыкается, т. к. или везде разные версии cmake саморезами прикручены или вручную каждую библиотеку в path прописывать, отлаживать эту подделку псевдоязыкописателей сложно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

94. Сообщение от Советский инженер (ok), 12-Авг-25, 19:00   +/
> ... пользуюсь штатными *.pro QtCreator'а

есть огромный шанс что в Qt 7 максимум 8 никакого *.pro не будет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру