CMP0164
Добавлено в версии 3.30.
add_library() отклоняет библиотеки SHARED, если они не поддерживаются платформой.
В CMake 3.29 и более ранних версиях на платформах, не поддерживающих общие библиотеки (TARGET_SUPPORTS_SHARED_LIBS имеет значение false), команда add_library() автоматически преобразует библиотеки SHARED в библиотеки STATIC, чтобы помочь пользователям собирать проекты на таких платформах. Однако семантика общих и статических библиотек достаточно различается, поэтому такое автоматическое преобразование не может работать в общем случае. Проекты, использующие общие библиотеки, необходимо переносить на такие платформы в каждом конкретном случае.
В CMake 3.30 и более поздних версиях add_library() предпочитает отклонять создание общих библиотек на платформах, которые их не поддерживают, и завершать работу с фатальным сообщением об ошибке. Эта политика обеспечивает совместимость с проектами, которые работали благодаря автоматическому преобразованию в статические библиотеки и не были обновлены для явного переноса.
Поведение OLD для этой политики — неявно создавать статическую библиотеку с предупреждением для разработчика. Поведение NEW для этой политики — завершаться с ошибкой.
Эта политика появилась в CMake версии 3.30. Её можно задать с помощью cmake_policy() или cmake_minimum_required(). Если она не задана, CMake не предупреждает об изменении поведения и использует поведение OLD.
Примечание
Поведение OLD политики по определению считается устаревшим и может быть удалено в будущей версии CMake.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0164.html