cmake_language¶
Call meta-operations on CMake commands.
Introduction¶
This command will call meta-operations on built-in CMake commands or
those created via the macro()
or function()
commands.
cmake_language
does not introduce a new variable or policy scope.
Calling Commands¶
cmake_language(CALL <command> [<args>...])
Calls the named <command>
with the given arguments (if any).
For example, the code:
set(message_command "message")
cmake_language(CALL ${message_command} STATUS "Hello World!")
is equivalent to
message(STATUS "Hello World!")
Note
To ensure consistency of the code, the following commands are not allowed:
if
/elseif
/else
/endif
while
/endwhile
foreach
/endforeach
function
/endfunction
macro
/endmacro
Evaluating Code¶
cmake_language(EVAL CODE <code>...)
Evaluates the <code>...
as CMake code.
For example, the code:
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()"
)
is equivalent to
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)