Xu Ma
update
1c3c0d9
raw
history blame
2.23 kB
# Create meta targets that build all examples for a single configuration:
foreach(cub_target IN LISTS CUB_TARGETS)
cub_get_target_property(config_prefix ${cub_target} PREFIX)
set(config_meta_target ${config_prefix}.examples)
add_custom_target(${config_meta_target})
add_dependencies(${config_prefix}.all ${config_meta_target})
endforeach()
## cub_add_example
#
# Add an example executable and register it with ctest.
#
# target_name_var: Variable name to overwrite with the name of the example
# target. Useful for post-processing target information per-backend.
# example_name: The name of the example minus "<config_prefix>.example." For
# instance, examples/vector.cu will be "vector", and examples/cuda/copy.cu
# would be "cuda.copy".
# example_src: The source file that implements the example.
# cub_target: The reference cub target with configuration information.
#
function(cub_add_example target_name_var example_name example_src cub_target)
cub_get_target_property(config_prefix ${cub_target} PREFIX)
# The actual name of the test's target:
set(example_target ${config_prefix}.example.${example_name})
set(${target_name_var} ${example_target} PARENT_SCOPE)
# Related target names:
set(config_meta_target ${config_prefix}.examples)
set(example_meta_target cub.all.example.${example_name})
add_executable(${example_target} "${example_src}")
target_link_libraries(${example_target} ${cub_target})
cub_clone_target_properties(${example_target} ${cub_target})
target_include_directories(${example_target} PRIVATE "${CUB_SOURCE_DIR}/examples")
# Add to the active configuration's meta target
add_dependencies(${config_meta_target} ${example_target})
# Meta target that builds examples with this name for all configurations:
if (NOT TARGET ${example_meta_target})
add_custom_target(${example_meta_target})
endif()
add_dependencies(${example_meta_target} ${example_target})
if (CUB_ENABLE_EXAMPLES_WITH_RDC)
set_target_properties(${example_target} PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
)
endif()
add_test(NAME ${example_target}
COMMAND "$<TARGET_FILE:${example_target}>"
)
endfunction()
add_subdirectory(block)
add_subdirectory(device)