Files
CMake/Tests/RunCMake/CMP0163/CMP0163-Common-Test12.cmake
Deniz Bahadir 071f0d6f98 CMP0163: Make GENERATED source file property globally visible
This was originally attempted by policy CMP0118, but its
implementation did not cover all intended use cases.  We fixed its
documentation in commit 1dabbbb5e0 (CMP0118: Revise documentation to
describe actual behavior, 2024-03-20).

Add new policy CMP0163 to cover the remaining use cases.  In particular,
make the `GENERATED` property visible to `get_property` calls in other
directories.  In order to capture the original intention of CMP0118,
define CMP0163's NEW behavior to also imply CMP0118's NEW behavior.

Fixes: #25437
Fixes: #25058
2024-03-29 08:54:11 -04:00

66 lines
2.5 KiB
CMake

include(${CMAKE_CURRENT_LIST_DIR}/CMP0163-Common-Helper.cmake)
# The sources of custom0 will not be modified by set_property!
add_custom_target(custom0)
target_sources(custom0 PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source0.txt"
)
# The sources of custom[1-6] will (tried to) be modified by set_property!
add_custom_target(custom1)
target_sources(custom1 PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source1.txt"
)
add_custom_target(custom2)
target_sources(custom2 PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source2.txt"
)
add_custom_target(custom3)
target_sources(custom3 PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source3.txt"
)
add_custom_target(custom4)
target_sources(custom4 PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source4.txt"
)
add_custom_target(custom5)
target_sources(custom5 PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source5.txt"
)
add_custom_target(custom6)
target_sources(custom6 PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source6.txt"
)
add_custom_command(TARGET custom0 PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/Source.txt.in"
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source0.txt"
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/Generated_source0.txt"
)
add_custom_command(TARGET custom1 PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/Source.txt.in"
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source1.txt"
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/Generated_source1.txt"
)
add_custom_command(TARGET custom2 PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/Source.txt.in"
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source2.txt"
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/Generated_source2.txt"
)
add_custom_command(TARGET custom3 PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/Source.txt.in"
"${CMAKE_CURRENT_BINARY_DIR}/Generated_source3.txt"
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/Generated_source3.txt"
)
add_subdirectory(subdir-Common-Test12)
get_and_print_GENERATED_property("Generated_source0.txt")
get_and_print_GENERATED_property("Generated_source1.txt")
get_and_print_GENERATED_property("Generated_source2.txt")
get_and_print_GENERATED_property("Generated_source3.txt")
get_and_print_GENERATED_property("Generated_source4.txt")
get_and_print_GENERATED_property("Generated_source5.txt")
get_and_print_GENERATED_property("Generated_source6.txt")