CheckPIESupported
Проверьте, поддерживает ли компоновщик код с независимой позицией (PIE) или без независимой позиции (NO_PIE) для исполняемых файлов. Используйте это, чтобы убедиться, что свойство целевого объекта POSITION_INDEPENDENT_CODE для исполняемых файлов будет учтено во время компоновки.
-
check_pie_supported -
check_pie_supported([OUTPUT_VARIABLE <output>] [LANGUAGES <lang>...])Доступны следующие варианты:
-
OUTPUT_VARIABLE <output> -
Установить
<output>переменную с информацией об ошибке. -
LANGUAGES <lang>... -
Проверить компоновщики, используемые для каждого из указанных языков. Поддерживаемые языки —
C,CXX, иFortran.
-
Использование этого модуля бессмысленно, когда CMP0083 установлено в OLD, поэтому в этом случае команда вернёт ошибку. Подробности см. в политике CMP0083.
Переменные
Для каждого проверяемого языка определены две булевы переменные кэша.
-
CMAKE_<lang>_LINK_PIE_SUPPORTED -
Устанавливается в
YESеслиPIEподдерживается компоновщиком и вNOв противном случае. -
CMAKE_<lang>_LINK_NO_PIE_SUPPORTED -
Устанавливается в
YESеслиNO_PIEподдерживается компоновщиком и вNOв противном случае.
Примеры
check_pie_supported() set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
# Retrieve any error message.
check_pie_supported(OUTPUT_VARIABLE output LANGUAGES C)
set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
if(NOT CMAKE_C_LINK_PIE_SUPPORTED)
message(WARNING "PIE is not supported at link time: ${output}.\n"
"PIE link options will not be passed to linker.")
endif()
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.15/module/CheckPIESupported.html