12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!
- #! Extracts target names from a string containing CMake option values.
- #!
- #! Example usage:
- #! \code
- #! set(build_options Plugins/org.mydomain.core:ON Plugins/org.mydomain.logic:ON)
- #! ctkFunctionExtractPluginTargets("${build_options}" ALL target_names)
- #! message("targets: ${target_names}")
- #! \endcode
- #! will print <code>targets: org_mydomain_core;org_mydomain_logic</code>.
- #!
- #! \param my_opts A string containing a list of options.
- #! \param my_filter One of ON, OFF or ALL. Checks the actual build option of the plugin.
- #! \param var_targets A variable name containing the output.
- #!
- function(ctkFunctionExtractPluginTargets my_opts my_filter var_targets)
- if("${my_filter}" STREQUAL "ON" OR "${my_filter}" STREQUAL "OFF"
- OR "${my_filter}" STREQUAL "ALL")
- set(valid_input 1)
- else()
- set(valid_input 0)
- set(error_msg "${my_filter} is not one of ON, OFF or ALL")
- endif()
- if(NOT valid_input)
- message(FATAL_ERROR "${error_msg}")
- endif()
- set(plugin_targets )
- foreach(opt ${my_opts})
- ctkFunctionExtractOptionNameAndValue(${opt} plugin_name_with_dirs plugin_value)
- string(REPLACE "/" ";" _tokens ${plugin_name_with_dirs})
- list(GET _tokens -1 plugin_name)
- string(REPLACE "." "_" plugin_target ${plugin_name})
- if("${my_filter}" STREQUAL "ALL")
- list(APPEND plugin_targets ${plugin_target})
- elseif("${my_filter}" STREQUAL "ON")
- if(${${plugin_name_with_dirs}_option_name})
- list(APPEND plugin_targets ${plugin_target})
- endif()
- else()
- if(NOT ${${plugin_name_with_dirs}_option_name})
- list(APPEND plugin_targets ${plugin_target})
- endif()
- endif()
- endforeach()
- set(${var_targets} ${plugin_targets} PARENT_SCOPE)
- endfunction()
|