Spec-Zone.ru › CMake 3.17

CMP0008

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

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

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

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

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

Данная политика была введена в CMake версии 2.6.1. CMake версии 3.17.5 предупреждает, когда политика не задана, и использует поведение OLD. Используйте команду cmake_policy(), чтобы явно установить её в OLD или NEW.

Примечание

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

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

Spec-Zone.ru

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