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

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

Отправлено opennews , 17-Июл-18 22:28 
Доступен (https://blog.kitware.com/cmake-3-12-0-available-for-download/) релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.12 (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.12.html):


-   Команда target_link_libraries() теперь может использоваться для
библиотек объектных файлов (Object Libraries);

-  В команды file(GLOB) и file(GLOB_RECURSE) добавлен флаг CONFIGURE_DEPENDS, которые позволяет обрабатывать зависимости системы сборки в процессе перебора содержимого каталогов;

-   Средства для настройки параметров компилятора (Compile Features) теперь учитывают особенности стандарта C++ 20, но набор мета-флагов "cxx_std_20" пока остаётся пустым;

-  В генераторы для Visual Studio 2017 в CMAKE_GENERATOR_TOOLSET добавлена поддержка опции "version=14.##" для явного выбора версии инструментария;
-  В режим сборки  (cmake --build) добавлена опция "--parallel [jobs]"  ("-j [jobs]") для определения числа параллельно запускаемых сборочных процессов;

-  Добавлена команда add_compile_definitions() для указания конструкций препроцессора, применяемых для текущего уровня иерархии каталогов;

-  В команды cmake_minimum_required() и cmake_policy(VERSION) добавлена возможность указания диапазонов версий в форме "min...max";

-  В команде find_package() обеспечена поддержка поиска префикса, указанного в параметре или переменной окружения PackageName_ROOT;

-  Добавлены новые выражения генератора "$‹GENEX_EVAL:…›", "$‹TARGET_GENEX_EVAL:target,…›", "$‹TARGET_EXISTS:…›" и "$‹TARGET_NAME_IF_EXISTS:…›";


-  В модулях FindCURL, FindALSA, FindLibXml2 и FindJPEG обеспечена установка флагов импортирования (https://cmake.org/cmake/help/v3.12/prop_tgt/IMPORTED.html);

-  Добавлен модуль FindODBC для поиска библиотеки ODBC (Open Database
    Connectivity);
-  Добавлены модули FindPython, FindPython3 и FindPython2 для  определения наличия окружений для выполнения скриптов на языке Python.

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


Содержание

Сообщения в этом обсуждении
"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 17-Июл-18 22:28 
FindPython3! Наконец, решится старая проблема с нахождением второго питона при поиске третьей версии из-за того, что другой подкаталог искал вторую версию...

"Релиз системы сборки CMake 3.12"
Отправлено gdsagdfhdfg , 18-Июл-18 00:42 
В мире С/CPP во всем такая же жесть, как и в сборке?

"Релиз системы сборки CMake 3.12"
Отправлено pavard , 18-Июл-18 02:33 
этот мир не для сказочных принцесс. можешь не красоваться - не оценят.

"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 18-Июл-18 07:26 
Последний раз как я смотрел у С все хорошо с их Makefile-ами, это C++-шники как напридумывают усложнений а потом их ещё сложнее делают и чтобы компилировалось по часу.

"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 18-Июл-18 12:42 
> В мире С/CPP

Прочитал как "В мире СССР"


"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 18-Июл-18 19:50 
Держи нас в курсе всех твоих случаев неверного восприятия тех или иных букв

"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 18-Июл-18 02:35 
> В режим сборки (cmake --build) добавлена опция "--parallel [jobs]" ("-j [jobs]")

Джва года этого ждал. Заколебался выставлять переменную оружения MAKEFLAGS или как она там называется, для того, чтобы собираемые мейком сборки собирались параллельно


"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 18-Июл-18 02:37 
Еще бы прикрутили что-нибудь типа -j auto, чтобы раскрывалось в значение ядер в процессоре, чтобы не приходилось это число рассчитывать внешними скриптами или хардкодить наобум

"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 18-Июл-18 06:47 
-j `nproc`

не благодари


"Релиз системы сборки CMake 3.12"
Отправлено др. Аноним , 18-Июл-18 11:45 
> -j `nproc`
> не благодари

За что?


$ nproc
bash: nproc: command not found
$ gnproc
32


"Релиз системы сборки CMake 3.12"
Отправлено анон , 18-Июл-18 13:53 
ты перепутал с тильдой через шифт

"Релиз системы сборки CMake 3.12"
Отправлено др. Аноним , 18-Июл-18 14:36 
> ты перепутал с тильдой через шифт

Нет.



"Релиз системы сборки CMake 3.12"
Отправлено Michael Shigorin , 20-Июл-18 01:47 
> -j `nproc`
> не благодари

За что благодарить, если вот так и начинает расползаться без нужды довольно-таки новодел, а потом сиди и патчи в любой ситуации на полшага в сторону?

Одни неосиляторы документации костылят свои виндосистемы сборки, другие потом ещё и их обкостыливают, потому что ни -j, ни тем более -l не удосужились сделать ещё вместе с открытием того, что сборки могут быть параллельными...


"Релиз системы сборки CMake 3.12"
Отправлено Владимир , 18-Июл-18 07:58 
Да вроде и до этого работало
cmake --build -- -j 8

"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 18-Июл-18 18:20 
Где-то у меня с этим были проблемы. Вроде не получалось так использовать кроссплаьформеннон - под виндой msbuild ругался на непонятный параметр.

"Релиз системы сборки CMake 3.12"
Отправлено gergreg , 18-Июл-18 10:10 
sudo apt install ninja-build
cmake <path> -GNinja
ninja

"Релиз системы сборки CMake 3.12"
Отправлено Владимир , 18-Июл-18 15:26 
И что? человеку нужно по какой-то причине вызывать cmake фронтенд. Он и без ниндзи может точно так же вызывать make -j, разницы-то?
Допустим у человека скрипты, которые в зависимости от конфига собирают ninja/msbuild/xcodebuild. не будет он же в батниках if-ы делать под каждую систему? В каком-то случае cmake --build может быть удобен (другого кейса для этой херни я придумать не могу)

"Релиз системы сборки CMake 3.12"
Отправлено anonymous yet another , 18-Июл-18 08:44 
> В команды cmake_minimum_required() и cmake_policy(VERSION) добавлена возможность указания диапазонов версий в форме "min...max";

Как должны быть упорядочены по возрастанию версии 1.2.3 и 2.0.1?


"Релиз системы сборки CMake 3.12"
Отправлено trolleybus , 18-Июл-18 11:10 
2 > 1. Все просто (будь там хоть 1.99.98)

"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 18-Июл-18 12:28 
https://semver.org/

"Релиз системы сборки CMake 3.12"
Отправлено yet another anonymous , 18-Июл-18 12:41 
Ничего, что они тщательно обошли сравнение 1.2.3 ~ 2.0.1? Нотация semantic versioning образует слабо упорядоченное множество в котором отношение предшествования определено не для любой пары.

"Релиз системы сборки CMake 3.12"
Отправлено Аноним , 19-Июл-18 20:32 
Наркоман штоли?

"Precedence is determined by the first difference when comparing each of these identifiers from left to right as follows: Major, minor, and patch versions are always compared numerically"


"Релиз системы сборки CMake 3.12"
Отправлено Клыкастый , 18-Июл-18 18:22 
> Добавлен модуль FindODBC для поиска библиотеки ODBC (Open Database Connectivity);

да блин неужели же...