Warning, /office/kexi/cmake/modules/KexiGenerateDependencyGraph.cmake is written in an unsupported language. File is not indexed.
0001 # Generates dependency graphs for current project
0002 #
0003 # Copyright (C) 2017 Jarosław Staniek <staniek@kde.org>
0004 #
0005 # Redistribution and use is allowed according to the terms of the BSD license.
0006 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
0007
0008 if(TARGET generate_dependency_graph)
0009 return()
0010 endif()
0011
0012 find_package(Doxygen)
0013
0014 if(NOT DOXYGEN_DOT_EXECUTABLE)
0015 message(STATUS "Graphviz dot tool not found, won't generate dependency graphs")
0016 return()
0017 endif()
0018
0019 set(_graph_dir ${CMAKE_BINARY_DIR}/dependencies)
0020 set(_dot_file ${_graph_dir}/graph.dot)
0021 set(_image_file "dependency-graph-${CMAKE_PROJECT_NAME}.png")
0022
0023 simple_option(${PROJECT_NAME_UPPER}_DEPENDENCY_GRAPH_INCLUDE_KEXI_FRAMEWORKS "Include KEXI frameworks in the dependency graph" ON)
0024 simple_option(${PROJECT_NAME_UPPER}_DEPENDENCY_GRAPH_INCLUDE_ALL_LIBS "Include all libs in the dependency graph" OFF)
0025
0026 configure_file(${CMAKE_CURRENT_LIST_DIR}/CMakeGraphVizOptions.cmake.in
0027 ${CMAKE_BINARY_DIR}/CMakeGraphVizOptions.cmake)
0028
0029 add_custom_target(generate_dependency_graph)
0030
0031 add_custom_command(
0032 TARGET generate_dependency_graph POST_BUILD
0033 COMMAND ${CMAKE_COMMAND} -E make_directory ${_graph_dir}
0034 COMMAND cmake --graphviz=${_dot_file} .
0035 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
0036 COMMENT "Generating dependency graph ${_graph_dir}/${_dot_file} for "
0037 "${CMAKE_PROJECT_NAME} project"
0038 )
0039 add_custom_command(
0040 TARGET generate_dependency_graph POST_BUILD
0041 COMMAND ${DOXYGEN_DOT_EXECUTABLE} ${_dot_file} -T png > "${_graph_dir}/${_image_file}"
0042 WORKING_DIRECTORY ${_graph_dir}
0043 COMMENT "Generating dependency graph image ${_graph_dir}/${_image_file} for "
0044 "${CMAKE_PROJECT_NAME} project"
0045 )
0046
0047 add_custom_target(show_dependency_graph)
0048 if(WIN32)
0049 set(_open_command start)
0050 else()
0051 set(_open_command xdg-open)
0052 endif()
0053 add_custom_command(
0054 TARGET show_dependency_graph POST_BUILD
0055 COMMAND ${_open_command} "${_graph_dir}/${_image_file}"
0056 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
0057 COMMENT "Show dependency graph image for ${CMAKE_PROJECT_NAME} project"
0058 )
0059
0060 unset(_dot_file)
0061 unset(_image_file)
0062 unset(_graph_dir)
0063 unset(_open_command)