Skip to content
This repository has been archived by the owner on Dec 19, 2023. It is now read-only.

Commit

Permalink
Optimize doxygen
Browse files Browse the repository at this point in the history
  • Loading branch information
SineStriker committed Sep 3, 2023
1 parent 8657533 commit dfa12a1
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 12 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ option(FRAMELESSHELPER_BUILD_STATIC "Build FramelessHelper as a static library."
option(FRAMELESSHELPER_BUILD_WIDGETS "Build FramelessHelper's Widgets module." ON)
option(FRAMELESSHELPER_BUILD_QUICK "Build FramelessHelper's Quick module." ON)
option(FRAMELESSHELPER_BUILD_EXAMPLES "Build FramelessHelper demo applications." OFF)
option(FRAMELESSHELPER_BUILD_DOCUMENTATIONS "Build FramelessHelper documentations." OFF)
option(FRAMELESSHELPER_EXAMPLES_DEPLOYQT "Deploy the Qt framework after building the demo projects." OFF)
option(FRAMELESSHELPER_NO_DEBUG_OUTPUT "Suppress the debug messages from FramelessHelper." ON)
option(FRAMELESSHELPER_NO_BUNDLE_RESOURCE "Do not bundle any resources within FramelessHelper." OFF)
Expand All @@ -61,7 +62,6 @@ option(FRAMELESSHELPER_NO_TRANSLATION "Don't bundle the I18N translations into t
option(FRAMELESSHELPER_NO_MICA_MATERIAL "Disable the cross-platform homemade Mica Material." OFF)
option(FRAMELESSHELPER_NO_BORDER_PAINTER "Disable the cross-platform window frame border painter." OFF)
option(FRAMELESSHELPER_NO_SYSTEM_BUTTON "Disable the pre-defined StandardSystemButton control." OFF)
option(FRAMELESSHELPER_BUILD_DOCUMENTATIONS "Build FramelessHelper documentations." ON)

if(FRAMELESSHELPER_NO_WINDOW AND FRAMELESSHELPER_BUILD_EXAMPLES)
message(WARNING "You can't build the examples when the FramelessWindow class is disabled at the same time!")
Expand Down
43 changes: 37 additions & 6 deletions doxygen/doxygen.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,15 @@ Add Doxygen target.
[COMPILE_DEFINITIONS <NAME=VALUE> ...]
[TARGETS <target> ...]
[ENVIRONMENT_EXPORTS <key> ...]
[NO_EXPAND_MACROS <macro> ...]
[NO_EXPAND_MACROS <macro> ...]
[DEPENDS <dependency> ...]
)
]] #
function(setup_doxygen_command _target)
set(options)
set(oneValueArgs NAME VERSION DESCRIPTION LOGO MDFILE OUTPUT_DIR GENERATE_TAGFILE)
set(oneValueArgs NAME VERSION DESCRIPTION LOGO MDFILE OUTPUT_DIR INSTALL_DIR GENERATE_TAGFILE)
set(multiValueArgs INPUT TAGFILES INCLUDE_DIRECTORIES COMPILE_DEFINITIONS TARGETS ENVIRONMENT_EXPORTS
NO_EXPAND_MACROS
NO_EXPAND_MACROS DEPENDS
)
cmake_parse_arguments(FUNC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

Expand Down Expand Up @@ -132,7 +133,6 @@ function(setup_doxygen_command _target)

list(APPEND _env "DOXY_FILE_DIR=${DOXYGEN_FILE_DIR}")
list(APPEND _env "DOXY_INCLUDE_FILE=${_doxy_includes}")
list(APPEND _env "DOXY_OUTPUT_DIR=${_doxy_output_dir}")

list(APPEND _env "DOXY_PROJECT_NAME=${_name}")
list(APPEND _env "DOXY_PROJECT_VERSION=${_version}")
Expand All @@ -141,12 +141,43 @@ function(setup_doxygen_command _target)
list(APPEND _env "DOXY_MAINPAGE_MD_FILE=${_mdfile}")
list(APPEND _env "DOXY_GENERATE_TAGFILE=${_tagfile}")

set(_build_command "${CMAKE_COMMAND}" "-E" "env" ${_env} "${DOXYGEN_EXECUTABLE}")
set(_build_command "${CMAKE_COMMAND}" "-E" "env"
${_env} "DOXY_OUTPUT_DIR=${_doxy_output_dir}"
"${DOXYGEN_EXECUTABLE}" "${DOXYGEN_FILE_DIR}/Doxyfile"
)

if(FUNC_DEPENDS)
set(_dependencies DEPENDS ${FUNC_DEPENDS})
endif()

add_custom_target(${_target}
${_build_command} "${DOXYGEN_FILE_DIR}/Doxyfile"
${_build_command}
COMMENT "Build HTML documentation"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
VERBATIM
${_dependencies}
)

if(FUNC_INSTALL_DIR AND CMAKE_INSTALL_PREFIX)
get_filename_component(_install_dir ${FUNC_INSTALL_DIR} ABSOLUTE BASE_DIR ${CMAKE_INSTALL_PREFIX})
set(_install_command "${CMAKE_COMMAND}" "-E" "env"
${_env} "DOXY_OUTPUT_DIR=${_install_dir}"
"${DOXYGEN_EXECUTABLE}" "${DOXYGEN_FILE_DIR}/Doxyfile"
)

set(_install_command_quoted)

foreach(_item ${_install_command})
set(_install_command_quoted "${_install_command_quoted}\"${_item}\" ")
endforeach()

install(CODE "
message(STATUS \"Install HTML documentation\")
file(MAKE_DIRECTORY \"${_install_dir}\")
execute_process(
COMMAND ${_install_command_quoted}
WORKING_DIRECTORY \"${CMAKE_CURRENT_SOURCE_DIR}\"
)
")
endif()
endfunction()
8 changes: 8 additions & 0 deletions doxygen/extra-stylesheet.css
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
table.memname tr {
float: left;
}

.memname td {
padding: 0;
}

.memname tr:last-child:not(:first-child) {
margin-left: 0.75em
}
19 changes: 16 additions & 3 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,24 @@
]]

set(_targets)
set(_doc_input_dirs)

if(TARGET Qt${QT_VERSION_MAJOR}::Core AND TARGET Qt${QT_VERSION_MAJOR}::Gui)
add_subdirectory(core)
list(APPEND _targets ${PROJECT_NAME}::Core)
list(APPEND _doc_input_dirs core ../include/FramelessHelper/Core)
endif()

if(FRAMELESSHELPER_BUILD_WIDGETS AND TARGET Qt${QT_VERSION_MAJOR}::Widgets)
add_subdirectory(widgets)
list(APPEND _targets ${PROJECT_NAME}::Widgets)
list(APPEND _doc_input_dirs widgets ../include/FramelessHelper/Widgets)
endif()

if(FRAMELESSHELPER_BUILD_QUICK AND TARGET Qt${QT_VERSION_MAJOR}::Quick)
add_subdirectory(quick)
list(APPEND _targets ${PROJECT_NAME}::Quick)
list(APPEND _doc_input_dirs quick ../include/FramelessHelper/Quick)
endif()

if(FRAMELESSHELPER_BUILD_DOCUMENTATIONS)
Expand All @@ -50,13 +54,22 @@ if(FRAMELESSHELPER_BUILD_DOCUMENTATIONS)
endif()

include(../doxygen/doxygen.cmake)

set(_install_options)

if(NOT FRAMELESSHELPER_NO_INSTALL)
set(_install_options INSTALL_DIR share/doc/FramelessHelper)
endif()

setup_doxygen_command(FramelessHelper_RunDoxygen
DESCRIPTION "Qt Window Customization Framework"
MDFILE ../doc/doxygen_mainpage.md
OUTPUT_DIR ${CMAKE_BINARY_DIR}/html
INPUT . ../include
OUTPUT_DIR ${CMAKE_BINARY_DIR}
INPUT ${_doc_input_dirs}
TARGETS ${_targets}
DEPENDS ${_targets}
NO_EXPAND_MACROS Q_OBJECT Q_GADGET Q_DECLARE_TR_FUNCTIONS
COMPILE_DEFINITIONS Q_SIGNALS=signals
COMPILE_DEFINITIONS Q_SIGNALS=Q_SIGNALS Q_SLOTS=Q_SLOTS
${_install_options}
)
endif()
9 changes: 7 additions & 2 deletions src/core/framelessmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,11 @@ void FramelessManagerPrivate::initialize()
/*!
\class FramelessManager
\brief FramelessHelper global manager, managing all frameless related resources.
\property FramelessManager::systemTheme
\property FramelessManager::systemAccentColor
\property FramelessManager::wallpaper
\property FramelessManager::wallpaperAspectStyle
*/

FramelessManager::FramelessManager(QObject *parent) :
Expand Down Expand Up @@ -420,14 +425,14 @@ void FramelessManager::removeWindow(const WId windowId)

/*!
\fn void FramelessManager::systemThemeChanged()
\brief This signal is emitted when the system theme changes externally.
This signal is emitted when the system theme changes externally.
\sa systemTheme()
*/

/*!
\fn void FramelessManager::wallpaperChanged()
\brief This signal is emitted when the system wallpaper changes externally.
This signal is emitted when the system wallpaper changes externally.
\sa wallpaper()
*/
Expand Down

0 comments on commit dfa12a1

Please sign in to comment.