cmake_language
Вызов метаопераций над командами CMake.
Синопсис
cmake_language(CALL <command> [<args>...]) cmake_language(EVAL CODE <code>...)
Введение
Эта команда вызывает метаоперации над встроенными командами CMake или теми, что созданы с помощью команд macro() или function().
cmake_language не вводит новую переменную или область действия политики.
Вызов команд
cmake_language(CALL <command> [<args>...])
Вызывает именованную <command> с заданными аргументами (если таковые имеются). Например, код:
set(message_command "message")
cmake_language(CALL ${message_command} STATUS "Hello World!")
эквивалентен
message(STATUS "Hello World!")
Примечание
Для обеспечения согласованности кода запрещены следующие команды:
-
if/elseif/else/endif -
while/endwhile -
foreach/endforeach -
function/endfunction -
macro/endmacro
Вычисление кода
cmake_language(EVAL CODE <code>...)
Вычисляет <code>... как код CMake.
Например, код:
set(A TRUE)
set(B TRUE)
set(C TRUE)
set(condition "(A AND B) OR C")
cmake_language(EVAL CODE "
if (${condition})
message(STATUS TRUE)
else()
message(STATUS FALSE)
endif()"
)
эквивалентен
set(A TRUE)
set(B TRUE)
set(C TRUE)
set(condition "(A AND B) OR C")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/eval.cmake "
if (${condition})
message(STATUS TRUE)
else()
message(STATUS FALSE)
endif()"
)
include(${CMAKE_CURRENT_BINARY_DIR}/eval.cmake)
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.18/command/cmake_language.html