Spec-Zone.ru › CMake 3.22

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 версии 3.22.6 предупреждает, когда параметр не задан, и использует поведение OLD. Используйте команду cmake_policy(), чтобы установить его в OLD или NEW явно.

Примечание

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

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

Spec-Zone.ru

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