Spec-Zone.ru › CMake 3.12

CMP0008

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

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

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

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

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

Эта политика была введена в CMake версии 2.6.1. CMake версии 3.12.4 предупреждает, если политика не установлена, и использует старое поведение. Используйте команду 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.12/policy/CMP0008.html

Spec-Zone.ru

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