LINUX.ORG.RU

CMake 3.28

 , , , ,

CMake 3.28

1

3

6 декабря состоялся выпуск 3.28 кроссплатформенной системы сборки CMake, написанной на языке C++ и распространяемой по лицензии BSD-3.

Список основных изменений:

  • улучшена поддержка модулей C++20 в генераторах Ninja и Visual Studio (VS 2022 и новее). Подробности в cmake-cxxmodules(7);
  • код языка HIP для GPU NVIDIA теперь может быть скомпилирован компилятором nvcc (NVIDIA CUDA Compiler). Подробности в описании переменной CMAKE_HIP_PLATFORM;
  • удалена команда exec_program(), признанная устаревшей в CMake 3.0. Вместо неё следует использовать execute_process();
  • сгенерированные файлы в целях, использующих наборы файлов, теперь по умолчанию считаются приватными. Генерируемые публичные заголовочные файлы должны быть указаны с помощью наборов файлов. Это позволяет создавать более эффективные графы сборки для Ninja. Подробности в политике CMP0154;
  • команды find_library(), find_path() и find_file() больше не ищут в префиксах установки, полученных из переменной окружения PATH. Это поведение было добавлено в CMake 3.3 для поддержки сред разработки MSYS и MinGW («MSYSTEM») в Windows и могло искать нежелательные префиксы, которые случайно оказались в PATH по каким-либо причинам.
  • добавлена поддержка директорий .xcframework для платформ Apple.

>>> Полный список изменений

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

Ответ на: комментарий от dataman

полезный enum_set

А когда в самом убогом DSL’е у CMake обнаружится этот enum_set, чтобы проекты не городили такие вот костыли:

https://github.com/raysan5/raylib/blob/master/cmake/EnumOption.cmake

Для использования подобных конструкций, которые как бы ожидаются в любой адекватной системе сборке, кроме CMake?

enum_option(PLATFORM "Desktop;Web;Android;Raspberry Pi;DRM" "Platform to build for.")

enum_option(OPENGL_VERSION "OFF;4.3;3.3;2.1;1.1;ES 2.0;ES 3.0" "Force a specific OpenGL Version?")
EXL ★★★★★
()
Ответ на: комментарий от dataman

Это же compile-time enum_set. Мало ли каких опций добавит автор проекта.

Так и что толку в том что в исходники CMake завезли какой-то там enum_set для их внутренней кухни, если в сам CMake DSL до сих пор не прокинуто ничего по типу велосипедного enum_option:

enum_option(OPENGL_VERSION "OFF;4.3;3.3;2.1;1.1;ES 2.0;ES 3.0" "Force a specific OpenGL Version?")

Который накостылил себе каждый проект имевший несчастье связаться с CMake?

Где профит-то? Тем более CMake’овский enum-велосипед в теории должен подмениться на такие вот подобные штуки из стандарта в будущем:

EXL ★★★★★
()
Ответ на: комментарий от dataman

Профит в использовании enum_set в моём внутреннем камбузе. :)

Ну да, я и говорю – внутрянняя кухня.

Потому что с выходом нового CMake вот это проектное велосипедирование разработчиков enum’ов: https://github.com/raysan5/raylib/blob/master/cmake/EnumOption.cmake никак не отпадает. Они всё ещё вынуждены писать эти кривоработающие костыли, чтобы сделать CMake хоть как-то юзабельным для их нужд.

EXL ★★★★★
()
Ответ на: комментарий от EXL

А когда в самом убогом DSL’е у CMake обнаружится этот enum_set

Когда ты перестанешь ныть

NickNotNick
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.