常规更新
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
function(ys_add_doxygen_target target_name)
|
||||
set(options)
|
||||
set(oneValueArgs PROJECT_NAME OUTPUT_DIR WORKING_DIRECTORY DOXYGEN_EXECUTABLE DOT_EXECUTABLE)
|
||||
set(multiValueArgs INPUT EXCLUDE FILE_PATTERNS PREDEFINED)
|
||||
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
if (NOT ARG_PROJECT_NAME)
|
||||
set(ARG_PROJECT_NAME "${PROJECT_NAME}")
|
||||
endif ()
|
||||
if (NOT ARG_OUTPUT_DIR)
|
||||
set(ARG_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/doxygen/${target_name}")
|
||||
endif ()
|
||||
if (NOT ARG_WORKING_DIRECTORY)
|
||||
set(ARG_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
||||
endif ()
|
||||
if (NOT ARG_DOXYGEN_EXECUTABLE)
|
||||
set(ARG_DOXYGEN_EXECUTABLE "C:/Program Files/doxygen/bin/doxygen.exe")
|
||||
endif ()
|
||||
if (NOT ARG_DOT_EXECUTABLE)
|
||||
set(ARG_DOT_EXECUTABLE "C:/Program Files/Graphviz/bin/dot.exe")
|
||||
endif ()
|
||||
if (NOT ARG_INPUT)
|
||||
set(ARG_INPUT "${CMAKE_SOURCE_DIR}")
|
||||
endif ()
|
||||
if (NOT ARG_FILE_PATTERNS)
|
||||
set(ARG_FILE_PATTERNS "*.h" "*.hpp" "*.hh" "*.cpp" "*.cxx" "*.cc")
|
||||
endif ()
|
||||
get_filename_component(dot_dir "${ARG_DOT_EXECUTABLE}" DIRECTORY)
|
||||
string(REPLACE ";" " " doxygen_input "${ARG_INPUT}")
|
||||
string(REPLACE ";" " " doxygen_exclude "${ARG_EXCLUDE}")
|
||||
string(REPLACE ";" " " doxygen_file_patterns "${ARG_FILE_PATTERNS}")
|
||||
string(REPLACE ";" " " doxygen_predefined "${ARG_PREDEFINED}")
|
||||
set(doxygen_file "${CMAKE_CURRENT_BINARY_DIR}/${target_name}.Doxyfile")
|
||||
configure_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/Doxyfile.in" "${doxygen_file}" @ONLY)
|
||||
add_custom_target(${target_name}
|
||||
COMMAND "${CMAKE_COMMAND}" -E make_directory "${ARG_OUTPUT_DIR}"
|
||||
COMMAND "${ARG_DOXYGEN_EXECUTABLE}" "${doxygen_file}"
|
||||
WORKING_DIRECTORY "${ARG_WORKING_DIRECTORY}"
|
||||
VERBATIM
|
||||
)
|
||||
endfunction()
|
||||
@@ -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()
|
||||
Reference in New Issue
Block a user