Spec-Zone.ru › CMake 3.29

CMP0008

Библиотеки, связанные полным путем, должны иметь допустимое имя файла библиотеки.

В CMake 2.4 и ниже можно написать код, подобный

target_link_libraries(myexe /full/path/to/somelib)

где somelib должно быть допустимым именем файла библиотеки, таким как libsomelib.a или somelib.lib. Для генераторов Makefile это приводит к ошибке во время сборки, потому что зависимость по полному пути не может быть найдена. Для IDE генераторов Visual Studio и генераторов Xcode это работало случайно, потому что CMake всегда отделял директорию библиотеки и просил компоновщик искать библиотеку по имени (-lsomelib или somelib.lib). Несмотря на неудачу с Makefiles, некоторые проекты содержат код такого вида и собираются только с Visual Studio и/или Xcode. Эта версия CMake предпочитает передавать полный путь напрямую в инструмент нативного построения, что в этом случае завершится ошибкой, поскольку не указано имя допустимого файла библиотеки.

Этот политический вопрос определяет, что делать с полными путями, которые, по-видимому, не указывают на допустимый файл библиотеки. OLD поведение для этого политика заключается в разделении имени библиотеки от пути и запросе к компоновщику найти её. NEW поведение для этого политика заключается в доверие заданному пути и передаче его напрямую в инструмент нативного построения без изменений.

Этот политический вопрос был введён в CMake версии 2.6.1. Он может быть установлен с помощью cmake_policy() или cmake_minimum_required(). Если он не установлен, CMake выводит предупреждение и использует OLD поведение.

Примечание

OLD поведение политики deprecated by definition и может быть удалено в будущей версии CMake.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/policy/CMP0008.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API