b2f1700bc7
This is for specifying INCLUDE_DIRECTORIES relevant to the build-location or the install location for example: set_property(TARGET foo PROPERTY INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>" ) A 'bar' target can then use: set_property(TARGET bar PROPERTY INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:foo,INTERFACE_INCLUDE_DIRECTORIES>" ) and it will work whether foo is in the same project, or an imported target from an installation location, or an imported target from a build location generated by the export() command. Because the generator expressions are only evaluated at build-time, these new expressions are equivalent to the ZeroNode and OneNode. The GeneratorExpression test is split into parts. Some shells can't run the custom command as it is getting too long.
94 lines
3.5 KiB
CMake
94 lines
3.5 KiB
CMake
cmake_minimum_required (VERSION 2.8.8)
|
|
project(GeneratorExpression NONE)
|
|
|
|
add_custom_target(check-part1 ALL
|
|
COMMAND ${CMAKE_COMMAND}
|
|
-Dtest_0=$<0:nothing>
|
|
-Dtest_0_with_comma=$<0:-Wl,--no-undefined>
|
|
-Dtest_1=$<1:content>
|
|
-Dtest_1_with_comma=$<1:-Wl,--no-undefined>
|
|
-Dconfig=$<CONFIGURATION>
|
|
-Dtest_and_0=$<AND:0>
|
|
-Dtest_and_0_0=$<AND:0,0>
|
|
-Dtest_and_0_1=$<AND:0,1>
|
|
-Dtest_and_1=$<AND:1>
|
|
-Dtest_and_1_0=$<AND:1,0>
|
|
-Dtest_and_1_1=$<AND:1,1>
|
|
# Ordinarily, the 'invalidcontent' would cause an error, but
|
|
# the '0' makes the AND abort early.
|
|
-Dtest_and_0_invalidcontent=$<AND:0,invalidcontent>
|
|
-Dtest_config_0=$<CONFIG:$<CONFIGURATION>x>
|
|
-Dtest_config_1=$<CONFIG:$<CONFIGURATION>>
|
|
-Dtest_config_debug=$<CONFIG:Debug>$<CONFIG:DEBUG>$<CONFIG:DeBuG>
|
|
-Dtest_config_release=$<CONFIG:Release>$<CONFIG:RELEASE>$<CONFIG:ReLeAsE>
|
|
-Dtest_config_relwithdebinfo=$<CONFIG:RelWithDebInfo>$<CONFIG:RELWITHDEBINFO>$<CONFIG:relwithdebinfo>
|
|
-Dtest_config_minsizerel=$<CONFIG:MinSizeRel>$<CONFIG:MINSIZEREL>$<CONFIG:minsizerel>
|
|
-Dtest_not_0=$<NOT:0>
|
|
-Dtest_not_1=$<NOT:1>
|
|
-Dtest_or_0=$<OR:0>
|
|
-Dtest_or_0_0=$<OR:0,0>
|
|
-Dtest_or_0_1=$<OR:0,1>
|
|
-Dtest_or_1=$<OR:1>
|
|
-Dtest_or_1_0=$<OR:1,0>
|
|
-Dtest_or_1_1=$<OR:1,1>
|
|
-Dtest_or_1_invalidcontent=$<OR:1,invalidcontent>
|
|
-Dtest_bool_notfound=$<BOOL:NOTFOUND>
|
|
-Dtest_bool_foo_notfound=$<BOOL:Foo-NOTFOUND>
|
|
-Dtest_bool_true=$<BOOL:True>
|
|
-Dtest_bool_false=$<BOOL:False>
|
|
-Dtest_bool_on=$<BOOL:On>
|
|
-Dtest_bool_off=$<BOOL:Off>
|
|
-Dtest_bool_no=$<BOOL:No>
|
|
-Dtest_bool_n=$<BOOL:N>
|
|
-Dtest_bool_empty=$<BOOL:>
|
|
-Dtest_strequal_yes_yes=$<STREQUAL:Yes,Yes>
|
|
-Dtest_strequal_yes_yes_cs=$<STREQUAL:Yes,yes>
|
|
-Dtest_strequal_yes_no=$<STREQUAL:Yes,No>
|
|
-Dtest_strequal_no_yes=$<STREQUAL:No,Yes>
|
|
-Dtest_strequal_angle_r=$<STREQUAL:$<ANGLE-R>,$<ANGLE-R>>
|
|
-Dtest_strequal_comma=$<STREQUAL:$<COMMA>,$<COMMA>>
|
|
-Dtest_strequal_angle_r_comma=$<STREQUAL:$<ANGLE-R>,$<COMMA>>
|
|
-Dtest_strequal_both_empty=$<STREQUAL:,>
|
|
-Dtest_strequal_one_empty=$<STREQUAL:something,>
|
|
-Dtest_angle_r=$<ANGLE-R>
|
|
-Dtest_comma=$<COMMA>
|
|
-Dtest_colons_1=$<1::>
|
|
-Dtest_colons_2=$<1:::>
|
|
-Dtest_colons_3=$<1:Qt5::Core>
|
|
-Dtest_colons_4=$<1:C:\\CMake>
|
|
-Dtest_colons_5=$<1:C:/CMake>
|
|
-P ${CMAKE_CURRENT_SOURCE_DIR}/check-part1.cmake
|
|
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 1 of 2)"
|
|
VERBATIM
|
|
)
|
|
|
|
add_custom_target(check-part2 ALL
|
|
COMMAND ${CMAKE_COMMAND}
|
|
-Dtest_incomplete_1=$<
|
|
-Dtest_incomplete_2=$<something
|
|
-Dtest_incomplete_3=$<something:
|
|
-Dtest_incomplete_4=$<something:,
|
|
-Dtest_incomplete_5=$something:,>
|
|
-Dtest_incomplete_6=<something:,>
|
|
-Dtest_incomplete_7=$<something::
|
|
-Dtest_incomplete_8=$<something:,
|
|
-Dtest_incomplete_9=$<something:,,
|
|
-Dtest_incomplete_10=$<something:,:
|
|
-Dtest_incomplete_11=$<something,,
|
|
-Dtest_incomplete_12=$<,,
|
|
-Dtest_incomplete_13=$<some$<1:special>thing
|
|
-Dtest_incomplete_14=$<$<ANGLE-R>
|
|
-Dtest_incomplete_15=$<some$<thing
|
|
-Dtest_incomplete_16=$<BOOL:something
|
|
-Dtest_incomplete_17=$<1:some$thing>
|
|
-Dtest_incomplete_18=$<1:some,thing
|
|
-Dtest_incomplete_19=$<1:some,thing$<ANGLE-R>
|
|
-Dtest_incomplete_20=$<CONFIGURATION$<ANGLE-R>
|
|
-Dtest_incomplete_21=$<BOOL:something$<ANGLE-R>
|
|
-Dtest_build_interface=$<BUILD_INTERFACE:build>
|
|
-Dtest_install_interface=$<INSTALL_INTERFACE:install>
|
|
-P ${CMAKE_CURRENT_SOURCE_DIR}/check-part2.cmake
|
|
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 2 of 2)"
|
|
VERBATIM
|
|
)
|