find_program(Graphviz_EXECUTABLE NAMES dot PATHS $ENV{PATH} DOC "path to Graphviz executable" REQUIRED) mark_as_advanced(Graphviz_EXECUTABLE) if(Graphviz_EXECUTABLE) set(Graphviz_FOUND true) if(WIN32) string(REGEX REPLACE "/bin/dot.exe" "" Graphviz_PATH ${Graphviz_EXECUTABLE}) endif() find_library(Graphviz_GVC_STATIC_LIBRARY NAMES gvc HINTS ${Graphviz_PATH}/lib) find_library(Graphviz_CDT_STATIC_LIBRARY NAMES cdt HINTS ${Graphviz_PATH}/lib) find_library(Graphviz_GRAPH_STATIC_LIBRARY NAMES cgraph HINTS ${Graphviz_PATH}/lib) find_library(Graphviz_GVP_CORE_STATIC_LIBRARY NAMES gvplugin_core HINTS ${Graphviz_PATH}/lib) find_library(Graphviz_GVP_DOT_LAYOUT_STATIC_LIBRARY NAMES gvplugin_dot_layout HINTS ${Graphviz_PATH}/lib) find_library(Graphviz_GVP_GDI_PLUS_STATIC_LIBRARY NAMES gvplugin_gdiplus HINTS ${Graphviz_PATH}/lib) find_library(Graphviz_GVP_NEATO_LAYOUT_STATIC_LIBRARY NAMES gvplugin_neato_layout HINTS ${Graphviz_PATH}/lib) find_library(Graphviz_GVP_PANGO_STATIC_LIBRARY NAMES gvplugin_pango HINTS ${Graphviz_PATH}/lib) find_library(Graphviz_XDOT_STATIC_LIBRARY NAMES xdot HINTS ${Graphviz_PATH}/lib) find_library(Graphviz_PATHPLAN_STATIC_LIBRARY NAMES pathplan HINTS ${Graphviz_PATH}/lib) set(Graphviz_INCLUDE_DIRECTORIES "${Graphviz_PATH}/include/graphviz") set(Graphviz_LIBRARIES ${Graphviz_GVC_STATIC_LIBRARY} ${Graphviz_CDT_STATIC_LIBRARY} ${Graphviz_GRAPH_STATIC_LIBRARY} ${Graphviz_GVP_CORE_STATIC_LIBRARY} ${Graphviz_GVP_DOT_LAYOUT_STATIC_LIBRARY} ${Graphviz_GVP_GDI_PLUS_STATIC_LIBRARY} ${Graphviz_GVP_NEATO_LAYOUT_STATIC_LIBRARY} ${Graphviz_GVP_PANGO_STATIC_LIBRARY} ${Graphviz_XDOT_STATIC_LIBRARY} ${Graphviz_PATHPLAN_STATIC_LIBRARY}) if (EXISTS "${Graphviz_PATH}/include/graphviz/graphviz_version.h") file(READ "${Graphviz_PATH}/include/graphviz/graphviz_version.h" _graphviz_version_content) string(REGEX MATCH "#define +PACKAGE_VERSION +\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" _dummy "${_graphviz_version_content}") set(Graphviz_VERSION "${CMAKE_MATCH_1}") endif () include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Graphviz REQUIRED_VARS Graphviz_LIBRARIES Graphviz_INCLUDE_DIRECTORIES VERSION_VAR Graphviz_VERSION) if(NOT TARGET Graphviz::Graphviz) add_library(Graphviz::Graphviz UNKNOWN IMPORTED) set_target_properties(Graphviz::Graphviz PROPERTIES IMPORTED_LOCATION "${Graphviz_GVC_STATIC_LIBRARY}" # randomly picked, should this be another one? INTERFACE_LINK_LIBRARIES "${Graphviz_CDT_STATIC_LIBRARY};${Graphviz_GRAPH_STATIC_LIBRARY};${Graphviz_GVP_CORE_STATIC_LIBRARY};${Graphviz_GVP_DOT_LAYOUT_STATIC_LIBRARY};${Graphviz_GVP_GDI_PLUS_STATIC_LIBRARY};${Graphviz_GVP_NEATO_LAYOUT_STATIC_LIBRARY};${Graphviz_GVP_PANGO_STATIC_LIBRARY};${Graphviz_XDOT_STATIC_LIBRARY};${Graphviz_PATHPLAN_STATIC_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Graphviz_INCLUDE_DIRECTORIES}" ) endif() endif()