The OpenNET Project / Index page

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

Релиз системы сборки CMake 3.28

11.12.2023 10:29

Опубликован релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.28, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки. Код CMake написан на языке C++ и распространяется под лицензией BSD.

Основные улучшения:

  • В генераторы сборочных сценариев для Visual Studio и Ninja добавлена поддержка модулей, определённых в спецификации C++ 20. Поддержка модулей доступна при наличии LLVM/Clang 16, GCC 14-dev или MSVC 14.34.
  • Реализована возможности компиляции для GPU NVIDIA кода на языке HIP, используя компилятор NVCC (NVIDIA CUDA Compiler). Добавлена переменная CMAKE_HIP_PLATFORM для выбора платформы GPU для HIP ("amd" или "nvidia").
  • На платформах Apple обеспечена поддержка каталогов ".xcframework".
  • Удалена команда "exec_program()", объявленная устаревшей в выпуске 3.0. Для запуска процессов следует использовать команду "execute_process()".
  • Файлы, сгенерированные с использованием режима "FILE_SET", теперь обрабатываются по умолчанию как приватные, что позволяет формировать более эффективный сборочный граф в генераторах Ninja.
  • В командах find_library(), find_path() и find_file() на платформе Windows отключён поиск в установочных каталогах, полученных из переменной окружения PATH (для унификации поведения в Windows с другими платформами).


  1. Главная ссылка к новости (https://www.kitware.com/cmake-...)
  2. OpenNews: Выпуск сборочной системы Meson 1.3
  3. OpenNews: Проект Сicada развивает систему автоматизации сборок, похожую на GitHub Actions
  4. OpenNews: Доступны системы сборки CMake 3.27.0 и Meson 1.2
  5. OpenNews: Facebook опубликовал систему сборки Buck2
  6. OpenNews: Выпуск системы сборки GNU Make 4.4
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60267-cmake
Ключевые слова: cmake, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (61) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (3), 10:48, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Удалена команда "exec_program()", объявленная устаревшей в выпуске 3.0. Для запуска процессов следует использовать команду "execute_process()".

    А если я хочу всё же запускать программы, а не процессы?

     
     
  • 2.4, фнон (?), 10:51, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ты всегда можешь сидеть на старой версии. Это тебе запретить никто не может.
     
  • 2.13, Аноним (3), 11:57, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    мне всегда казалось, что запускают именно программы, а процесс - это результат запуска программы, так как процесс - это внутренняя структура ядра для запущенной программы, для служб внутри ядра, для тредов внутри одной программы (у них тоже есть PID) и может для чего-то еще. То есть нельзя "запустить процесс", он уже по определению запущен. Но я не удивлен, так как симейк никогда не отличался понятностью, как видим там даже в нейминге грубейшие ошибки.
     
     
  • 3.16, Аноним (16), 12:53, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –8 +/
    Это потому, что ты никогда не писал программы, и даже не понимаешь, как они работают, поэтому не знаешь, как устроен процесс запуска исполняемого файла. В данном случае, именно что уменьшили грязь, а тебе стоит начать с чтения сишных манов.
     
     
  • 4.19, Аноним (3), 13:07, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И в чем я не прав? Ты и сам пишешь, что запускается именно файл, а не... процесс. В сишных мануалах кстати все правильно, там аналогичные функции именно создают процессы (create a process), а не "запускают" их. Так что рекомендую тебе вначале разобраться с терминологией ядра и открыть наконец мануалы.
     
     
  • 5.20, Аноним (16), 13:15, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Например, man 3 exec содержит подсказку, можешь продолжить man 2 fork с man 2 clone. Мне не нужно ничего открывать, а вот тебе стоило бы всё же ртфм
     
     
  • 6.24, Аноним (3), 14:29, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да, давай откроем man 3 exec:

    - execute a file
    - a file that is to be executed
    - the executed program
    - the file being executed
    - the executed program
    - the file being executed
    - an executable file
    - the file at the specified pathname is executed
    - the program to be executed

    Так что ты конечно маны открывай. Хотя бы раз в жизнь.

     
     
  • 7.25, Аноним (16), 14:33, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А, у тебя с пониманием проблемы, это всё объясняет.
     
     
  • 8.26, 3к4у5епнр (?), 15:08, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Насколько помню линукс ядро вообще не умеет запускать процессы, а может клониро... текст свёрнут, показать
     
     
  • 9.28, Аноним (16), 15:19, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В ядре линукса только clone по-моему, всё остальное в libc Ну, vfork тоже с... текст свёрнут, показать
     
     
  • 10.30, Аноним (3), 15:30, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Среди технически подкованных это запуском процесса не называется Максимум в быт... текст свёрнут, показать
     
     
  • 11.34, Аноним (16), 15:46, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И именно поэтому функция называется CreateProcess, да Чушь не пори Всё станови... текст свёрнут, показать
     
     
  • 12.36, Аноним (3), 15:51, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так ткни пальцем в ман, где бы говорилось, что функция запускает процесс, пр... текст свёрнут, показать
     
     
  • 13.37, Аноним (16), 15:58, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https learn microsoft com en-us windows win32 api processthreadsapi nf-process... текст свёрнут, показать
     
     
  • 14.38, Аноним (3), 16:10, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Даже в вантузе терминология абсолютно верная запускается файл модуль , а созда... текст свёрнут, показать
     
     
  • 15.39, Аноним (16), 16:17, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что значит, даже Сишные принципы в основе одни и те же, то же самое написано ... текст свёрнут, показать
     
     
  • 16.40, Аноним (3), 16:22, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Но цитатку ты привести снова забыл Спойлер ее там и нет Про то, что процесс... текст свёрнут, показать
     
     
  • 17.41, Аноним (16), 16:32, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А, тебе свербит из-за этого Насколько я это вижу, это не про execute process п... текст свёрнут, показать
     
     
  • 18.43, Аноним (3), 16:43, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    если бы ты программировал, ты бы знал, что в именах функций и переменных артикли... большой текст свёрнут, показать
     
     
  • 19.44, Аноним (16), 16:47, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    что, правда что ли Так я тебе только что объяснил, ещё раз повторить Речь идёт... текст свёрнут, показать
     
     
  • 20.48, Аноним (3), 17:11, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Для тебя это новость, потому что к программированию ты отношения не имеешь Свой... большой текст свёрнут, показать
     
  • 21.49, Аноним (16), 17:22, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вообще-то это у тебя execute переводиться как запустить , ты вообще уверен, ч... текст свёрнут, показать
     
  • 22.51, Аноним (3), 20:01, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    не знаю, что ты там инвертируешь , но это действительно так если в тексте напи... большой текст свёрнут, показать
     
  • 23.53, Аноним (16), 20:35, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я имел в виду, что process в данном случае вовсе не существительное То, что в о... большой текст свёрнут, показать
     
  • 24.54, Аноним (3), 22:44, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да-да, это не глагол, а бутылка водки Ага Это банка маринованных огурцов Не, ... большой текст свёрнут, показать
     
  • 25.55, Аноним (16), 00:18, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это было о использованной в названии общепринятой терминологии, которая является... большой текст свёрнут, показать
     
  • 26.58, Аноним (3), 12:29, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Снова ошибка процессы создаются, а не запускаются В линуксе они создаются-но... большой текст свёрнут, показать
     
  • 27.59, Аноним (16), 13:38, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Авторы симейка имели ввиду именно это execute passing a command to the child pr... текст свёрнут, показать
     
  • 28.60, Аноним (3), 14:19, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Где уж выдуманное, вон разрабы пишут execute one or more child processes Это н... большой текст свёрнут, показать
     
  • 29.62, Аноним (16), 14:52, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Т е ты ещё будешь отрицать, что запустить и создать -- это ровно одно и то же ... текст свёрнут, показать
     
  • 30.64, Аноним (3), 19:28, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Абсолютно разные вещи Можно создать программу, не запуская программу А можно и... большой текст свёрнут, показать
     
  • 31.65, Аноним (16), 19:49, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Как я уже упомянул в соседней ветке, корректная терминология это плодить порожд... большой текст свёрнут, показать
     
  • 32.66, Аноним (66), 21:31, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ммм, википедия На технические ресурсы ссылки давай Википедию пишут для домохоз... большой текст свёрнут, показать
     
  • 33.67, Аноним (16), 21:44, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот и ссылки уже не ссылки, да и слова другие А ведь, в той самой педивикии, ес... текст свёрнут, показать
     
  • 34.69, Аноним (66), 10:31, 13/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и употребляй терминологию 1974 года, лол В 2023 году процессы создаются, но ... текст свёрнут, показать
     
  • 17.42, Аноним (16), 16:34, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И я напоминаю особо косноязычным, что execute это не запустить , это исполнить... текст свёрнут, показать
     
  • 3.18, Big Robert TheTables (?), 13:03, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да, более того, тут может быть ошибочно принято, что exec_process() это что-то типа execve() с замещением вызывающего процесса.
     
     
  • 4.21, Аноним (16), 13:32, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Такое даже не приснится, кем ошибочно принято? Вот ты, когда-нибудь запускал детей? Контролировал их, убивал?
     
     
  • 5.33, 1 (??), 15:46, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вместо "запускал", надо написать "создавал" ... Так кровожаднее (ну и правильнее).
     
     
  • 6.35, Аноним (16), 15:51, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Вместо "запускал", надо написать "создавал" ... Так кровожаднее (ну и правильнее).

    Корректная терминология "плодить/порождать" (spawn).

     
  • 5.61, Big Robert TheTables (?), 14:29, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Такое даже не приснится, кем ошибочно принято? Вот ты, когда-нибудь запускал детей?
    > Контролировал их, убивал?

    вам надо отвлечься, развеяться.

     
  • 3.29, all_glory_to_the_hypnotoad (ok), 15:26, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ещё один графоман с околотехнической тематикой
     
  • 2.63, Пряник (?), 14:56, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда ты объявлен устаревшим и будешь удалён.
     

  • 1.5, Бывалый смузихлёб (?), 10:52, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    чем оно лучше мезона ?
     
     
  • 2.10, Аноним (10), 11:39, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Проще.
     
     
  • 3.17, Вы забыли заполнить поле Name (?), 12:59, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Запутаться
     
     
  • 4.45, Аноним (45), 16:52, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    в мезоне
     
  • 2.57, scriptkiddis (?), 10:24, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Тем что мязон не используется в кровавом тырпрайзе в отличие от симейка.
     
     
  • 3.68, Вы забыли заполнить поле Name (?), 22:21, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Тем что мязон не используется в кровавом тырпрайзе в отличие от симейка.

    Молод еще. А вообще в кровавом ынтерпрайзе свои системы сборки: у майков своя, у гугла bazel (gn в хроме и фучсии), у мозилы mozbuild, у fb buck... Снаружи у них в проектах cmake торчит для удобства бета-тестеров.

     

  • 1.6, Аноним (6), 11:11, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >https://cmake.org/cmake/help/latest/manual/cmake-cxxmodules.7.html#manual:cmak)

    Ну теперь заживём!

     
     
  • 2.23, Bottle (?), 14:20, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, без шуток прогресс. Гентушники могут пересобирать мир быстрее.
     

  • 1.7, Аноним (7), 11:22, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Удалена команда "exec_program()", объявленная устаревшей в выпуске 3.0. Для запуска процессов следует использовать команду "execute_process()"

    А для совместимости нельзя было редирект exec_program() сделать на execute_process()? Обязательно нужно ломать старый API?

     
     
  • 2.8, Анон123 (?), 11:27, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >В командах find_library(), find_path() и find_file() отключён поиск в установочных каталогах, полученных из переменной окружения PATH

    Тоже минус совместимость

     
     
  • 3.15, Аноним (15), 12:02, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это окончательное исправление регрессии и тут оно касается только платформы Windows. См оригинальный changelog:

    This behavior was added in CMake 3.3 to
    support MSYS and MinGW (“MSYSTEM”) development environments on
    Windows, but it can search undesired prefixes that happen to be in
    the “PATH” for unrelated reasons. Users who keep some
    “<prefix>/bin” directories in the “PATH” just for their tools do not
    necessarily want any corresponding “<prefix>/lib” or
    “<prefix>/include” directories searched. The behavior was reverted
    for non-Windows platforms by CMake 3.6. Now it has been reverted on
    Windows platforms too.

     
     
  • 4.22, yet another anonymous (?), 13:55, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Удивительно. Они были всегда уверены, что лучше всех знают, что нужно добавить в "поиск зависимостей". А тут несного сдали назад.
     
  • 2.14, Аноним (15), 11:59, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Никакой проблемы нет, отключение старого API может сделать только сам проект.

    Если проект требует CMake 3.28 с помощью cmake_minimum_required(VERSION 3.28) или заявляет совместимость с API 3.28 используя cmake_policy(VERSION 3.28), то тогда вызов exec_program() приведёт к fatal error.

    Иначе в CMake сработает слой совместимости, управляемый https://cmake.org/cmake/help/latest/policy/CMP0153.html и exec_program() сработает так же, как в предыдущих версиях.

     
  • 2.31, all_glory_to_the_hypnotoad (ok), 15:34, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Обязательно. EXEC_PROGRAM заменили почти 10 лет назад. Да и сейчас старый вариант всё ещё можно включить через CMP0153
     

  • 1.46, Аноним (45), 16:54, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это хорошо, что инфраструктура C++ процветает и развивается.
     
     
  • 2.47, Топоним (?), 17:09, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Цветёт и пахнет
     
  • 2.52, Вы забыли заполнить поле Name (?), 20:27, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Это хорошо, что инфраструктура C++ процветает и развивается.

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

     
     
  • 3.56, Аноним (56), 01:19, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Удержится ли король? Зависит от нас с вами.

    А что делать как помочь?
    Просто писать код? или от этого станет только хуже?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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