Files
2026-09-20 11:43:10 +02:00

57 lines
2.6 KiB
CMake

add_custom_rule(write_properties OUTPUT "<CURRENT_BINARY_DIR>/RULE_PROPERTY-properties.cmake"
COMMAND "${CMAKE_COMMAND}" "-DOUTPUT_FILE=<CURRENT_BINARY_DIR>/RULE_PROPERTY-properties.cmake" -P "${CMAKE_CURRENT_SOURCE_DIR}/write_properties.cmake" -- "NAME=$<RULE_PROPERTY:<RULE>,NAME>"
"PARENT_RULE=$<RULE_PROPERTY:<RULE>,PARENT_RULE>"
"GLOBAL=$<RULE_PROPERTY:<RULE>,GLOBAL>"
"VERBATIM=$<RULE_PROPERTY:<RULE>,VERBATIM>"
"OUTPUT_FILE_SET=$<LIST:JOIN,$<RULE_PROPERTY:<RULE>,OUTPUT_FILE_SET>,:>"
"FOO=$<RULE_PROPERTY:<RULE>,FOO>"
"VOID=$<RULE_PROPERTY:<RULE>,VOID>")
set_property(RULE write_properties PROPERTY FOO BAR)
add_custom_target(write_properties ALL)
target_sources(write_properties PRIVATE FILE_SET fs TYPE write_properties FILES foo.txt)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/RULE_PROPERTY-validation.cmake"
[[
macro (CHECK_VALUE test_msg value expected)
if (NOT "${value}" STREQUAL "${expected}")
string (APPEND RunCMake_TEST_FAILED "${test_msg}: actual result:\n [${value}]\nbut expected:\n [${expected}]\n")
endif()
endmacro()
]])
# predefined properties
set(reference "write_properties")
string (APPEND GENERATE_CONTENT
"check_value (\"<RULE_PROPERTY:<RULE>,NAME>\" \"\${NAME}\" \"${reference}\")\n")
set(reference "")
string (APPEND GENERATE_CONTENT
"check_value (\"<RULE_PROPERTY:<RULE>,PARENT_RULE>\" \"\${PARENT_RULE}\" \"${reference}\")\n")
set(reference "0")
string (APPEND GENERATE_CONTENT
"check_value (\"<RULE_PROPERTY:<RULE>,GLOBAL>\" \"\${GLOBAL}\" \"${reference}\")\n")
set(reference "1")
string (APPEND GENERATE_CONTENT
"check_value (\"<RULE_PROPERTY:<RULE>,VERBATIM>\" \"\${VERBATIM}\" \"${reference}\")\n")
set(reference "__cmake_rule_write_properties_write_properties_fs_outputs:SOURCES")
string (APPEND GENERATE_CONTENT
"check_value (\"<RULE_PROPERTY:<RULE>,OUTPUT_FILE_SET>\" \"\${OUTPUT_FILE_SET}\" \"${reference}\")\n")
get_property(reference RULE write_properties PROPERTY FOO)
string (APPEND GENERATE_CONTENT
"check_value (\"<RULE_PROPERTY:<RULE>,FOO>\" \"\${FOO}\" \"${reference}\")\n")
get_property(reference RULE write_properties PROPERTY VOID)
string (APPEND GENERATE_CONTENT
"check_value (\"<RULE_PROPERTY:<RULE>,VOID>\" \"\${VOID}\" \"${reference}\")\n")
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/RULE_PROPERTY-validation.cmake" "${GENERATE_CONTENT}")