| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | #!#! \brief Compile a CMake doxygen input filter#!#! \param OUT <out-file> (optional) Supply an absolute filename for#!                             the generated executable.#! \param NAMESPACE <namespace> (optional) Supply a C++ namespace in#!                                    which the generated function declrarations      #!                              should be wrapped.#!#! \return This function sets the <code>CMakeDoxygenFilter_EXECUTABLE</code>#!         variable to the absolute path of the generated input filter executable#!         in the parent scope. If <out-file> is specified, they will be the same.#!#! This CMake function compiles the http://github.com/saschazelzer/CMakeDoxygenFilter#! project into a doxygen input filter executable. See#! http://github.com/saschazelzer/CMakeDoxygenFilter/blob/master/README for more details.#!#! \ingroup CMakeUtilitiesfunction(ctkFunctionCMakeDoxygenFilterCompile)  #-------------------- parse function arguments -------------------  set(DEFAULT_ARGS)  set(prefix "FILTER")  set(arg_names "OUT;NAMESPACE")  set(option_names "")  foreach(arg_name ${arg_names})    set(${prefix}_${arg_name})  endforeach()  foreach(option ${option_names})    set(${prefix}_${option} FALSE)  endforeach()  set(current_arg_name DEFAULT_ARGS)  set(current_arg_list)  foreach(arg ${ARGN})    set(larg_names ${arg_names})    list(FIND larg_names "${arg}" is_arg_name)    if(is_arg_name GREATER -1)      set(${prefix}_${current_arg_name} ${current_arg_list})      set(current_arg_name "${arg}")      set(current_arg_list)    else()      set(loption_names ${option_names})      list(FIND loption_names "${arg}" is_option)      if(is_option GREATER -1)        set(${prefix}_${arg} TRUE)      else()        set(current_arg_list ${current_arg_list} "${arg}")      endif()    endif()  endforeach()  set(${prefix}_${current_arg_name} ${current_arg_list})  #------------------- finished parsing arguments ----------------------  if(FILTER_OUT)    set(copy_file "${FILTER_OUT}")  else()    set(copy_file "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/CMakeDoxygenFilter${CMAKE_EXECUTABLE_SUFFIX}")  endif()  set(compile_defs "")  if(FILTER_NAMESPACE)    set(compile_defs "${compile_defs} -DUSE_NAMESPACE=${FILTER_NAMESPACE}")  endif()  set(cmake_doxygen_filter_src "${CTK_SOURCE_DIR}/Documentation/CMakeDoxygenFilter.cpp")  try_compile(result_var              "${CMAKE_CURRENT_BINARY_DIR}"              "${cmake_doxygen_filter_src}"              COMPILE_DEFINITIONS ${compile_defs}              OUTPUT_VARIABLE compile_output              COPY_FILE ${copy_file}             )  if(NOT result_var)    message(FATAL_ERROR "error: Faild to compile ${cmake_doxygen_filter_src} (result: ${result_var})\n${compile_output}")  endif()  set(CMakeDoxygenFilter_EXECUTABLE "${copy_file}" PARENT_SCOPE)endfunction()
 |