You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.1 KiB
57 lines
2.1 KiB
1 year ago
|
include_directories(${HDF5_INCL})
|
||
|
link_directories(${HDF5_LINK})
|
||
|
|
||
|
set_property(GLOBAL PROPERTY ALL_EXAMPLES)
|
||
|
set_property(GLOBAL PROPERTY ALL_RUNNABLE_EXAMPLES)
|
||
|
function (declare_example name)
|
||
|
set(options RUN) # if the example is considered short enough to be run during tests
|
||
|
cmake_parse_arguments(declare_example "${options}" "" "" ${ARGN})
|
||
|
|
||
|
add_executable(${name} "${name}.cpp")
|
||
|
target_link_libraries(${name} medusa)
|
||
|
target_compile_options(${name} PRIVATE "-O3")
|
||
|
set_target_properties(${name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||
|
|
||
|
# add to all examples
|
||
|
get_property(tmp GLOBAL PROPERTY ALL_EXAMPLES)
|
||
|
list(APPEND tmp ${name})
|
||
|
set_property(GLOBAL PROPERTY ALL_EXAMPLES ${tmp})
|
||
|
# add command to run example immediately after compiling from its respective directory
|
||
|
add_custom_target(${name}_run
|
||
|
COMMAND echo "Running ${name} ..."
|
||
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${name}
|
||
|
COMMAND echo "Done!"
|
||
|
DEPENDS ${name}
|
||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||
|
|
||
|
if (declare_example_RUN)
|
||
|
get_property(tmp GLOBAL PROPERTY ALL_RUNNABLE_EXAMPLES)
|
||
|
list(APPEND tmp "${name}_run")
|
||
|
set_property(GLOBAL PROPERTY ALL_RUNNABLE_EXAMPLES ${tmp})
|
||
|
endif()
|
||
|
endfunction(declare_example)
|
||
|
|
||
|
# include all examples in subfolders
|
||
|
add_subdirectory(3d_objects)
|
||
|
add_subdirectory(advection_diffusion)
|
||
|
add_subdirectory(cahnHilliard_equation)
|
||
|
add_subdirectory(coupled_domains)
|
||
|
add_subdirectory(customization)
|
||
|
add_subdirectory(electromagnetic_scattering)
|
||
|
add_subdirectory(ghost_nodes)
|
||
|
add_subdirectory(linear_elasticity)
|
||
|
add_subdirectory(nonNewtonian_fluid)
|
||
|
add_subdirectory(poisson_equation)
|
||
|
add_subdirectory(quantum_mechanics)
|
||
|
add_subdirectory(thermo_fluid)
|
||
|
add_subdirectory(wave_equation)
|
||
|
|
||
|
# join all examples in a single target
|
||
|
get_property(ALL_EXAMPLES GLOBAL PROPERTY ALL_EXAMPLES)
|
||
|
add_custom_target(examples)
|
||
|
add_dependencies(examples ${ALL_EXAMPLES})
|
||
|
|
||
|
get_property(ALL_RUNNABLE_EXAMPLES GLOBAL PROPERTY ALL_RUNNABLE_EXAMPLES)
|
||
|
add_custom_target(examples_run)
|
||
|
add_dependencies(examples_run ${ALL_RUNNABLE_EXAMPLES})
|