12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #!
- #! \brief Stores all target dependencies (potentially also from external projects)
- #! in the variable specified by the first argument.
- #!
- #! \param var_deps (required) A variable name containing the output.
- #! \param TARGETS (required) A list of targets (library targets or plug-in targets/symbolic names)
- #! for which the set of dependencies should be obtained.
- #! \param ALL (option) Include external dependencies.
- #! \ingroup CMakeUtilities
- function(ctkFunctionGetTargetDependencies var_deps)
- ctkMacroParseArguments(MY "TARGETS" "ALL" ${ARGN})
- # Sanity checks
- if(NOT var_deps)
- message(FATAL_ERROR "Missing variable name as the first argument for storing the result")
- endif()
-
- if(NOT MY_TARGETS)
- message(FATAL_ERROR "Missing target names")
- endif()
- set(_targets )
- foreach(_target ${MY_TARGETS})
- # convenience conversion for plug-in targets
- string(REPLACE "." "_" _target ${_target})
- # assume the variable ${_target}_DEPENDENCIES was set during
- # a previous invocation of the ctkMacroValidateBuildOptions macro.
- list(APPEND _targets ${${_target}_DEPENDENCIES})
- endforeach()
-
- if (_targets)
- list(REMOVE_DUPLICATES _targets)
- if(NOT MY_ALL)
- # remove external targets not belonging to the current project
- ctkMacroGetAllProjectTargetLibraries("${_targets}" _targets)
- endif()
- endif()
- set(${var_deps} ${_targets} PARENT_SCOPE)
- endfunction()
|