URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 115867
[ Назад ]

Исходное сообщение
"Релиз системы сборки CMake 3.13"

Отправлено opennews , 21-Ноя-18 11:37 
Состоялся (https://blog.kitware.com/cmake-3-13-0-available-for-download/) релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.13 (http://www.cmake.org/), выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код  CMake написан на языке C++  и распространяется под лицензией BSD.

CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, минимальным числом зависимостей (нет привязки к M4, Perl или Python), поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки.

Основные улучшения (https://cmake.org/cmake/help/v3.12/release/3.13.html):

-  В команду cmake  добавлены опции  "-S source_dir" и "-B build_dir" для определения путей к каталогу с исходными текстами и каталогу для сборки;

-  Добавлены новые команды "target_link_directories()",  "target_link_options()" и "target_link_libraries()" для определения каталогов, опций и местоположения библиотек, используемых в операциях компоновки;

-  В команду "install(TARGETS)" добавлена поддержка установки целевых файлов, созданных вне текущего каталога;

-  В генератор "Green Hills MULTI" добавлена возможность выбора платформы, архитектуры и инструментария;


-  В генераторы для Visual Studio 2010 и более новых версий добавлена опция "INTERPROCEDURAL_OPTIMIZATION" и связанный с ней модуль "CheckIPOSupported" для управления применением межпроцедурных оптимизаций. Добавлены свойства "VS_DEBUGGER_COMMAND_ARGUMENTS" и "VS_DEBUGGER_ENVIRONMENT" для определения аргументов командной строки и переменных окружения для управления отладочными режимами в генераторах для Visual Studio;

-  На платформе Windows обеспечена возможность использования команды "cmake -E create_symlink";

-  В команде "option()" теперь учитывается наличие нормальных переменных с тем же именем (они  теперь не переопределяются в кэше и настройках);

-  В команде "target_sources()" обработка относительных путей к исходным текстам теперь производится относительно текущего каталога с исходными текстами;
-  Добавлено правило "CMP0076", определяющее требования к обеспечению обратной совместимости в случаях, когда необходимо сохранение старого поведения.

URL: https://blog.kitware.com/cmake-3-13-0-available-for-download/
Новость: https://www.opennet.ru/opennews/art.shtml?num=49642


Содержание

Сообщения в этом обсуждении
"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 11:37 
Сначала программы собирали командой запускающей компилятор.
Потом стали использовать скрипты на баше - с собственным, полным по Тюрингу языком. Баш запускал компилятор.
Потом появилась утилита make, с собственным полным по Тюрингу языком. Make запускает баш, который запускает компилятор.

Потом стали использовать ./configure файлы на баше(хотя поадались и на перле) которые создавали Makefile, которая запускала баш, который запускал компилятор.

CMAKE с собственным полным по Тюрингу языком, который генерит Makefile, который запускает баш, который запускал компилятор.

Вершину этого я видел в процессе сборки нативных приложений под Андроид, где Gradle, с собственным полным по Тюрингу языком, запускает Cmake, который генерит Makefile, которай запускала баш, который запускал компилятор.

Хотя погодите, специалисты рекомендуют использовать системы автоматической сборки, типа BuildCity, которая на основании скрипта на котлине, что то там про Тюринга, запускает Gradle, который ...


"Релиз системы сборки CMake 3.13"
Отправлено 1 , 21-Ноя-18 11:49 
Ну дык "Любую проблему можно решить, добавив ещё один уровень абстракции"

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 11:52 
А проблему "Слишком много уровней абстракции"?


"Релиз системы сборки CMake 3.13"
Отправлено Andrey Mitrofanov , 21-Ноя-18 12:11 
> А проблему "Слишком много уровней абстракции"?

Рассматриваем как "проблема? значит, уровней абстракции недостаточно." и применяем решение из п.1 !
</прогрессивненько же>


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 12:24 
Поэтому приложение facebook на телефоне состоит из 18 000 классов и более 3 000 000 методов.

Это вызывает проблемы на старых телефонах, так как размер стека вызовов больше фиксированных 5 мегабайт.
https://jaxenter.com/facebooks-completely-insane-dalvik-hack...

Это приложение которое показывает картинки и текст.


"Релиз системы сборки CMake 3.13"
Отправлено КО , 21-Ноя-18 13:09 
В легкую, только добавлять надо не один уровень абстракции, а увеличивать их на порядок.
После того как это заработает, старый вариант уже не "слишком много". :)

"Релиз системы сборки CMake 3.13"
Отправлено user , 21-Ноя-18 18:03 
Это не проблема, это решение. Нужно же как-то продавать поддержку.

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 12:22 
Судя по вашим терадам не осилили даже инструментарий сборки

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 12:28 
Во-первых, https://ru.wiktionary.org/wiki/%D1%82%D0%...
Кроме того, вводные слова и словосочетания (в Вашем случае - "Судя по вашим терадам") выделяются запятыми.
Во-вторых - освоил и не один.

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 13:11 
А вот и спеллчекер подъехал

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 18:58 
Вам повезло. Обращайтесь, пока не уехал.

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 12:28 
Решение должно быть лучше чем проблема, иначе это лечение холеры при помощи чумы.
У CMAKE спецификация больше и сложнее чем K&R C. Даже не трогая модули.

"Релиз системы сборки CMake 3.13"
Отправлено user , 21-Ноя-18 17:59 
IMHO CMAKE заточен под генерацию из IDE, а не под написание вручную.

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 23:21 
Оставь своё имхо при себе. Для генерации xml и json есть. А тут практически свой язык https://cmake.org/cmake/help/v3.0/manual/cmake-language.7.ht...

"Релиз системы сборки CMake 3.13"
Отправлено Акакжев , 21-Ноя-18 12:38 
Мало просто собрать, надо собрать в deb или rpm пакет.

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 12:44 
Или в flatpack, а может в Appimage, еще Docker контейнер не желаете?

"Релиз системы сборки CMake 3.13"
Отправлено Акакжев , 21-Ноя-18 13:14 
Тьюринг однажды проснулся и не понял, Тьюринг ли он, или машина, которую придумал Тьюринг.

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 13:43 
Он видеокарта! Nvidia Turing

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 19:47 
Однажды видеокарта проснулась и так родился Скайнет.

"Релиз системы сборки CMake 3.13"
Отправлено Акакжев , 22-Ноя-18 15:08 
> Однажды видеокарта проснулась и так родился Скайнет.

Отныне в тренде Skyfall SSC-X-9


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 22-Ноя-18 00:19 
Там для него давно уже макросов напилили. Одной строчкой делается.

"Релиз системы сборки CMake 3.13"
Отправлено Акакжев , 22-Ноя-18 08:09 
> Там для него давно уже макросов напилили. Одной строчкой делается.

Угу. Потому debian -- это отдельный каталог в дереве исходников. Плюс к тому, образовалась некая отдельная категория разработчиков -- "сопровождающий пакетов". В действительности даже в ebuild-ах нужны, помимо inherit, дополнительные строки.

Но намёк не на сложность. Решения проблемы dependency hell приводит к появлению всё новых и новых решений.

make install --> apt install --> docker pull


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 13:14 
ещё bazel вспомни

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 13:25 
Ага. Когда надо не только скомпилировать, а еще, например, из DSL код сгенерировать (protobuf, например) или из редактируемых форматов десятки/сотни/тысячи картинок сделать (из psd, svg и т.п в png и jpg), тоже будете ручками запускать? :) Или долго и нудно изобретать bash скрипты с учетом зависимостей и с инкрементальными сборками?

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 13:46 
так это же вы сами виноваты, что наплодили всяких make, nmake, ninja, msbuild - вот и приходится для кроссплатформенности городить костыли. То ли дело одна платформочка, один Turbo Pascal, ничего лишнего, какие скрипты.

"Релиз системы сборки CMake 3.13"
Отправлено немезидеЦ , 22-Ноя-18 07:48 
> То ли дело одна платформочка, один Turbo Pascal, ничего лишнего, какие скрипты.

Уже есть Fpcmake во FreePascal - так что, там тоже не избежали этого.


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 22-Ноя-18 12:26 
Ага, msbuild - точно "мы" наплодили ;)

"Релиз системы сборки CMake 3.13"
Отправлено твой лучший друг , 21-Ноя-18 14:29 
Грамотный заброс, но, помнится, у гугля была сборка андроид-сдк чисто на GNU Make. и даже толковые статеечки были, поясняющие их выбор.  Т.е. корпорация зла содержит трезвые головы в нужном для обоснования минимализма количестве.

"Релиз системы сборки CMake 3.13"
Отправлено all_glory_to_the_hypnotoad , 21-Ноя-18 23:59 
Мало ли что где полно по Тьюрингу, это совершенно бесполезное свойство.

Шел, например, не умеет отслеживать зависимости ибо он не DSL для сборки, а кодить на нём сложную логику напряжно. make в принципе запускает компилятор сам ибо дизайнился как около декларативный DSL именно для сборки, но из-за этого на нём невозможно не через задницу накодить императивную логику без шела.

В конце концов make, как DSL для сборки, оказался куском гогна совершенно не удовлетворяющим требованиям по сборке больших проектов. Как только люди не извращались с make сценариями чтобы научить их складывать промежуточные продукты (~объектники) в сторонке от кода, собирать код условно и делать кеш зависимым от сборочного окружения (например, отличать дебажную сборку от релизной). Из-за этого появились генераторы make сценариев с накостыливаем логики на баше.

Ясное дело, что генераторы make сценариев являются промежуточным этапом развития систем сборок и во многих местах уже существуют полноценные сборочные DSL инструменты без make. Пройдёт ещё с десяток лет и все cmake подобные инструменты останутся в истории, как и сам make. Десяток лет нужен на допилку закрытых прототипов и выкидывание их в СПО.


"Релиз системы сборки CMake 3.13"
Отправлено vstconsulting , 22-Ноя-18 01:50 
Яйцо в утке, утка в зайце, заяц в шоке...
Хотя я не лучше: tox -> make -> setuptools (python). Вот думаю сейчас - может всё в одном tox'е реализовать?

"Релиз системы сборки CMake 3.13"
Отправлено Школьник , 22-Ноя-18 13:25 
>Make запускает баш, который запускает компилятор.

Что за бред я читаю? Вы хоть раз htop запускали во время сборки?


"Релиз системы сборки CMake 3.13"
Отправлено Michael Shigorin , 25-Ноя-18 01:41 
Рецепты выполняются при помощи $(SHELL), если что.
А запускать полезней pstree(1).

"Релиз системы сборки CMake 3.13"
Отправлено Школьник , 26-Ноя-18 15:43 
> Рецепты выполняются при помощи $(SHELL), если что.
> А запускать полезней pstree(1).

Спасибо. Век живи, век учись, блин :-)


"Релиз системы сборки CMake 3.13"
Отправлено Michael Shigorin , 26-Ноя-18 17:28 
> Спасибо. Век живи, век учись, блин :-)

Тогда ещё пару полезняшек на те же темы, вдруг пригодятся:

- на http://cmcrossroads.com есть немало интересных штук по make, скажем, вот эту я применил в mkimage-profiles для трассировки цепочки целей: http://cmcrossroads.com/ask-mr-make/6535-tracing-rule-execut...

- не все руткиты, которые троянят ps(1), заморачиваются pstree(1) ;-)


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 11:49 
Вот за что уважаю Rust, так это за то, что вместе с языком идет достаточная система сборки и управления зависимостями - Cargo.

И не нужны эти сторонние глючные костыли в виде Make/Cmake/Automake/Ant/over 9000 переусложненных, глючных приложений, с over 9000 форматов конфигурации.


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 12:03 
И более 9000 версий систем сборки.
Программирую под Адрющу.
Стандартная ситуевина:
- В системе установлен Gradle X версии
- В Android Studio идет с Gradle Y версии
- Проекту для сборки нужен Gradle Z версии
- Его зависимостям нужен Gradle вашумать версии.

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 12:24 
Потому что неыиг локально билдить

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 12:33 
"Так же, как все! В облаках, в облаках! Так же, как все!"

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 13:19 
Ок, давайте соберем servo на расте:
> Servo is built with Cargo, the Rust package manager. We also use Mozilla's Mach tools to orchestrate the build and other tasks.

ну, ладно, допустим.

> export CMAKE=cmake3
> brew install automake autoconf@2.13 pkg-config python cmake yasm llvm

What a f...

Короче любой проект сложнее hello world потребует что-то на C/C++ и онную систему сборки.


"Релиз системы сборки CMake 3.13"
Отправлено X4asd , 21-Ноя-18 14:36 
> Вот за что уважаю Rust, так это за то, что вместе с языком идет достаточная система сборки и управления зависимостями - Cargo.

вот за что разочаровался в Rust -- за то что вместе с ним идёт система сборки Cargo.

и не просто идёт -- а по сути является частью языка.

получается что отказаться от Cargo -- НЕЛЬЗЯ. нельзя заменить на что-то другое. в итоге язык сам себя подставил -- заставив программистов в обязательном порядке НЕ использовать различные системы сборки.

и не надо думать будто Cargo решило все проблемы. во первых система версионирования пакетов может не отражать реальность ("реальность" представляемую в голове Cargo). а на этом в Cargo всё держится. во вторых Rust может оказаться лишь маленькой частью другой большой программы -- и вот тут Cargo только вставляет палки в колёса, не предоставив качественной инфроструктуры которую можно было бы использовать из другой (внешней) системы сборки.

вобщем пока делали язык -- всё было хорошо. но как только ударились в систему сборки -- всё сразу напортачили.


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 15:17 
>нельзя заменить на что-то другое

rustc - голый компилятор. Используется с любой системой сборки, хоть в Makefile-е пищи

CC = rustc

>по сути является частью языка.

ложь, трындеж и провокация.
>НЕ использовать различные системы сборки.

смотри выше. Гуглим CMakeRust для примера.


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 22:42 
>получается что отказаться от Cargo -- НЕЛЬЗЯ. нельзя заменить на что-то другое. в итоге язык сам себя подставил -- заставив программистов в обязательном порядке НЕ использовать различные системы сборки.

Это как раз очень хорошо. Лучше иметь одну систему сборки и один пакетный менеджер, чем держать зоопарк несовместимых друг с другом решений. Если программистов в карго что-то не устраивает, то пусть фиксят карго, а не разводят зоопарк.


"Релиз системы сборки CMake 3.13"
Отправлено Акакжев , 22-Ноя-18 08:12 
> Если
> программистов в карго что-то не устраивает, то пусть фиксят карго, а
> не разводят зоопарк.

А если фиксы не примут, пусть делают форк :)


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 23-Ноя-18 00:48 
Да, 2 почти неотличимых форка не выживут, останется только 1.
Доказано OpenWRT.

"Релиз системы сборки CMake 3.13"
Отправлено Акакжев , 23-Ноя-18 06:44 
> Да, 2 почти неотличимых форка не выживут, останется только 1.
> Доказано OpenWRT.

Бритва Оккама же.


"Релиз системы сборки CMake 3.13"
Отправлено user , 21-Ноя-18 18:01 
Не доверяю системам сборки, которые сами что-то скачивают.

"Релиз системы сборки CMake 3.13"
Отправлено Юзер , 21-Ноя-18 13:43 
> минимальным числом зависимостей (нет привязки к M4, Perl или Python)

Гонево! У этого CMake over9000 зависимостей, вплоть до распоследней LibC. В итоге я на своём не самом свежем линуксе этот ваш сы-манки так и не собрал, как и ту долбанную прогу, к-я его потребовала.


"Релиз системы сборки CMake 3.13"
Отправлено kravich , 21-Ноя-18 15:19 
del

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 21:39 
> У этого CMake over9000 зависимостей, вплоть до распоследней LibC

Я спрашивал у разрабов. Бинарные сборки, доступные на сайте, собирают в Debian 6 с Glibc 2.11


"Релиз системы сборки CMake 3.13"
Отправлено FedeX , 21-Ноя-18 14:35 
Судя по комментам все ненавидят CMake, но избавиться от него не могут. Народ, я с вами!

"Релиз системы сборки CMake 3.13"
Отправлено X4asd , 21-Ноя-18 14:43 
> Судя по комментам все ненавидят CMake, но избавиться от него не могут. Народ, я с вами!

ну потому что форум про Linux.

а CMake ну уж совсем не похож на Linux-программы. ни синтаксисом ключей. ни уважением к традициям pkg-config ..

ды и вообще CMake щаз пользуется популярностью в MS Windows и OS X -- в хипсторских C++ программах (не путать с православным C). а на GNU/Linux оно не так уж и популярно, как впрочем и сам C++.

победная эстафета в GNU/Linux перехватывается сейчас Meson Build .. ну а CMake продолжает набирать популярность в MS Windows и OS X.


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 16:07 
>ни уважением к традициям pkg-config

Он там всегда поддерживался. Ты о чём вообще?


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 19:04 
> Он там всегда поддерживался. Ты о чём вообще?

не без проблем


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 23:18 
Каких?

"Релиз системы сборки CMake 3.13"
Отправлено yet another anonymous , 21-Ноя-18 17:43 
> ... Meson Build ...

Спаси нас от таких друзей, а с врагами мы и сами справимся.


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 22:58 
>Meson has two main dependencies.

    Python 3
    Ninja

Итого: чтобы собрать программу на 1 килобайт надо скачать и поставить Анаконду на 3 гига.

Киллер-фича CMake - это то, что она не лочит пользователя, ни к компилятору, ни к инструменту сборки, ни к башу, ни к цигвину. ДЛЯ НЕЁ НЕ НУЖНО УСТАНАВЛИВАТЬ НИЧЕГО, ЧТО ПОЛЬЗОВАТЕЛЮ НЕ НУЖНО, ДОСТАТОЧНО УЖЕ ТОГО, ЧТО УЖЕ ЕСТЬ. РАДИ ЭТОГО МЫ ЕЁ И ТЕРПИМ. РАДИ ТОГО, ЧТО БЫ ЗНАЕМ - ЕСЛИ МЫ ИСПОЛЬЗУЕМ CMake, ПОЛЬЗОВАТЕЛЬ НЕ СКАЖЕТ "ПОШЁЛ НА *** СО СВОЕЙ СТУДИЕЙ", "ПОШЁЛ НА *** СО СВОИМ bazelем", "ПОШЁЛ НА *** СО СВОИМ Пистоном, Рубином и Node.JS" и "ПОШЁЛ НА *** СО СВОИМ ya" (проприетарный сборочный инструмент от яндекса). Я знаю это потому, что я сам так сказал не раз. Меня реально достал этот зоопарк, когда для сборки одной библиотеки надо конкретно за*****я с установкой зависимостей, их зависисмостей и зависимостей их зависимостей.


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 21-Ноя-18 23:01 
>Ninja

И ещё собрать ниндзю, сборка которой тянет за собой пистон, если нет рабочей ниндзи, так как бинарника для i686 они не предоставляют.

Но ниндзю я собрал, благо что пистон у меня и так есть. Но если бы не был, то тогда бы у меня подгорела жопа.


"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 22-Ноя-18 13:34 
> поставить Анаконду на 3 гига.

что мешает вместо анаконды на 3 гига поставить чистый CPython на 20 мегабайт?


"Релиз системы сборки CMake 3.13"
Отправлено Ложечка , 22-Ноя-18 20:09 
Книжку кто-то читал? https://crascit.com/professional-cmake/ Стоит своих денег?

"Релиз системы сборки CMake 3.13"
Отправлено Аноним , 23-Ноя-18 00:52 
>Стоит своих денег?

Нет.


"Релиз системы сборки CMake 3.13"
Отправлено l2y , 24-Ноя-18 21:10 
Стоит. Единственная CMake книга, которая более менее объясняет новичкам основные концепции.

Ее также можно скачать на либгене.


"Релиз системы сборки CMake 3.13"
Отправлено Ложечка , 25-Ноя-18 11:37 
>Ее также можно скачать на либгене.

(bow)