常规更新

This commit is contained in:
2026-07-24 10:54:44 +08:00
parent 62e106564a
commit 714ffa3a55
2 changed files with 100 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
function(ys_add_graphviz_render_target target_name)
set(options)
set(oneValueArgs OUTPUT_DIR FORMAT DOT_EXECUTABLE)
set(multiValueArgs INPUT)
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if (NOT ARG_OUTPUT_DIR)
set(ARG_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/graphviz/${target_name}")
endif ()
if (NOT ARG_FORMAT)
set(ARG_FORMAT "svg")
endif ()
if (NOT ARG_DOT_EXECUTABLE)
set(ARG_DOT_EXECUTABLE "C:/Program Files/Graphviz/bin/dot.exe")
endif ()
set(outputs)
foreach(dot_file IN LISTS ARG_INPUT)
get_filename_component(dot_name "${dot_file}" NAME_WE)
list(APPEND outputs "${ARG_OUTPUT_DIR}/${dot_name}.${ARG_FORMAT}")
endforeach()
add_custom_target(${target_name}
COMMAND "${CMAKE_COMMAND}" -E make_directory "${ARG_OUTPUT_DIR}"
VERBATIM
)
foreach(dot_file IN LISTS ARG_INPUT)
get_filename_component(dot_name "${dot_file}" NAME_WE)
add_custom_command(TARGET ${target_name} POST_BUILD
COMMAND "${ARG_DOT_EXECUTABLE}" "-T${ARG_FORMAT}" "${dot_file}" "-o" "${ARG_OUTPUT_DIR}/${dot_name}.${ARG_FORMAT}"
VERBATIM
)
endforeach()
endfunction()
function(ys_add_cmake_graphviz_target target_name)
set(options)
set(oneValueArgs SOURCE_DIR BINARY_DIR OUTPUT_DIR FORMAT DOT_EXECUTABLE)
set(multiValueArgs)
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if (NOT ARG_SOURCE_DIR)
set(ARG_SOURCE_DIR "${CMAKE_SOURCE_DIR}")
endif ()
if (NOT ARG_BINARY_DIR)
set(ARG_BINARY_DIR "${CMAKE_BINARY_DIR}")
endif ()
if (NOT ARG_OUTPUT_DIR)
set(ARG_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/graphviz/${target_name}")
endif ()
if (NOT ARG_FORMAT)
set(ARG_FORMAT "svg")
endif ()
if (NOT ARG_DOT_EXECUTABLE)
set(ARG_DOT_EXECUTABLE "C:/Program Files/Graphviz/bin/dot.exe")
endif ()
set(dot_file "${ARG_OUTPUT_DIR}/${target_name}.dot")
set(image_file "${ARG_OUTPUT_DIR}/${target_name}.${ARG_FORMAT}")
add_custom_target(${target_name}
COMMAND "${CMAKE_COMMAND}" -E make_directory "${ARG_OUTPUT_DIR}"
COMMAND "${CMAKE_COMMAND}" -S "${ARG_SOURCE_DIR}" -B "${ARG_BINARY_DIR}" "--graphviz=${dot_file}"
COMMAND "${ARG_DOT_EXECUTABLE}" "-T${ARG_FORMAT}" "${dot_file}" "-o" "${image_file}"
VERBATIM
)
endfunction()