CMP0023
Простые и ключевые подписи target_link_libraries не могут быть смешаны.
CMake 2.8.12 ввел подпись target_link_libraries с ключевыми словами PUBLIC, PRIVATE и INTERFACE для обобщения ключевых слов LINK_PUBLIC и LINK_PRIVATE, введенных в CMake 2.8.7. Использование подписей с любым из этих ключевых слов явно задаёт интерфейс связи целевого объекта, даже если он пустой. Это приводит к путанице в поведении, когда используется в сочетании с историческим поведением простой подписи target_link_libraries. Например, рассмотрите код:
target_link_libraries(mylib A) target_link_libraries(mylib PRIVATE B)
После первой строки интерфейс связи не задан явно, поэтому CMake будет использовать реализацию связи, A, как интерфейс связи. Однако вторая строка задаёт пустой интерфейс связи. Чтобы избежать этого тонкого поведения, CMake теперь предпочитает запретить смешивание простых и ключевых подписей target_link_libraries для одного целевого объекта.
Старое поведение для этой политики заключается в разрешении смешивания ключевых и простых подписей target_link_libraries. Новое поведение для этой политики заключается в запрещении смешивания ключевых и простых подписей.
Эта политика была введена в версии CMake 2.8.12. Версия CMake 3.5.2 предупреждает, когда политика не установлена, и использует старое поведение. Используйте команду cmake_policy, чтобы явно установить её в OLD или NEW.
Примечание
Поведение политики OLD deprecated by definition и может быть удалено в будущих версиях CMake.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.5/policy/CMP0023.html