CMP0083
Новое в версии 3.14.
Для управления генерацией исполняемого файла с независимым от позиции (PIE) или без неё, требуются некоторые флаги на этапе линковки.
CMake 3.13 и ниже не добавляли эти флаги линковки, когда POSITION_INDEPENDENT_CODE был установлен.
Поведение по умолчанию для этой политики заключается в том, чтобы не управлять PIE флагами линковки. Поведение по NEW настройке заключается в добавлении флагов линковки, если POSITION_INDEPENDENT_CODE установлен:
- Установка значения
TRUE: флаги для создания исполняемого файла с независимой позицией передаются на этап линковки. Например,-pieдляGCC. - Установка значения
FALSE: флаги для предотвращения создания исполняемого файла с независимой позицией передаются на этап линковки. Например,-no-pieдляGCC. - Не установлено: никакие флаги не передаются на этап линковки.
Поскольку данный линковщик может не поддерживать PIE флаги во всех средах, в которых он используется, ответственность за использование модуля CheckPIESupported для проверки поддержки лежит на проекте, чтобы гарантировать, что свойство цели POSITION_INDEPENDENT_CODE для исполняемых файлов будет учтено на этапе линковки.
Эта политика была добавлена в версию CMake 3.14. Используйте команду cmake_policy() для явного её установки на OLD или NEW. В отличие от большинства политик, CMake версии 3.21.0-rc3 не предупреждает, если эта политика не установлена, и просто использует поведение по умолчанию OLD.
Примечание
Платформа Android имеет специальную обработку PIE, поэтому нет необходимости использовать модуль CheckPIESupported для обеспечения передачи флагов линковщику.
Примечание
Поведение по умолчанию этой политики OLD является deprecated by definition и может быть удалено в будущих версиях CMake.
Примеры
Поведение аналогично CMake 3.13 и не применяет никаких PIE флагов на этапе линковки.
cmake_minimum_required(VERSION 3.13) project(foo) # ... add_executable(foo ...) set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
Используйте модуль CheckPIESupported для определения того, поддерживается ли PIE текущим линковщиком и средой. Применяйте PIE флаги только в том случае, если линковщик их поддерживает.
cmake_minimum_required(VERSION 3.14) # CMP0083 NEW project(foo) include(CheckPIESupported) check_pie_supported() # ... add_executable(foo ...) set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.21/policy/CMP0083.html