CheckPIESupported
New in version 3.14.
Проверка, поддерживает ли компоновщик код, независимый от позиции (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.New in version 3.23:
OBJC,OBJCXX,CUDA, иHIPподдерживаются.
-
Использовать этот модуль бессмысленно, когда CMP0083 установлено в OLD, поэтому команда в этом случае вернёт ошибку. Подробнее см. политику CMP0083.
Переменные
Для каждого проверяемого языка определяются две булевы переменные кэша.
-
CMAKE_<lang>_LINK_PIE_SUPPORTED -
Устанавливается в true, если
PIEподдерживается компоновщиком, и в false в противном случае. -
CMAKE_<lang>_LINK_NO_PIE_SUPPORTED -
Устанавливается в true, если
NO_PIEподдерживается компоновщиком, и в false в противном случае.
Примеры
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–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.24/module/CheckPIESupported.html