├── .codedocs ├── .editorconfig ├── .gitignore ├── .travis.yml ├── CMakeLists.txt ├── LICENSE ├── README.md ├── appveyor.yml ├── cmake └── Modules │ └── CodeCoverage.cmake ├── codecov.yml ├── doc ├── CMakeLists.txt ├── Doxyfile.in ├── directory_structure.md ├── main_page.md ├── setting_up_ci.md ├── setting_up_documentation.md └── variables_and_targets.md ├── include └── project-abbr │ ├── config.hpp.in │ ├── factorial.hpp │ └── hello_world.hpp ├── src ├── factorial.cpp ├── hello_world.cpp └── main.cpp ├── test ├── CMakeLists.txt ├── factorial_test.cpp ├── hello_world_test.cpp └── test_runner.cpp └── third_party └── doctest └── doctest.h /.codedocs: -------------------------------------------------------------------------------- 1 | # CodeDocs.xyz Configuration File 2 | # 3 | # Rename this example to '.codedocs' and put it in the root directory of your 4 | # repository. This file is optional, documentation will still be generated 5 | # without it using sensible defaults. 6 | 7 | #--------------------------------------------------------------------------- 8 | # CodeDocs Configuration 9 | #--------------------------------------------------------------------------- 10 | 11 | # Include the Doxygen configuration from another file. 12 | # The file must be a relative path with respect to the root of the repository. 13 | # If any of the options in this doxyfile include a path (ie, INPUT), these 14 | # paths will be considered relative to the root of the repository, not the 15 | # location of the DOXYFILE. 16 | 17 | DOXYFILE = doc/Doxyfile.in 18 | 19 | # Specify external repository to link documentation with. 20 | # This is similar to Doxygen's TAGFILES option, but will automatically link to 21 | # tags of other repositories already using CodeDocs. List each repository to 22 | # link with by giving its location in the form of owner/repository. 23 | # For example: 24 | # TAGLINKS = doxygen/doxygen CodeDocs/osg 25 | # Note: these repositories must already be built on CodeDocs. 26 | 27 | TAGLINKS = 28 | 29 | #--------------------------------------------------------------------------- 30 | # Doxygen Configuration 31 | #--------------------------------------------------------------------------- 32 | 33 | # These variables have to be redefined since codedocs cannot run CMake 34 | PROJECT_NAME = "Project Name" 35 | PROJECT_NUMBER = 0.1.0 36 | PROJECT_BRIEF = "A cross-platform C++14 project template" 37 | OUTPUT_DIRECTORY = doc/ 38 | INPUT = doc/ include/ 39 | USE_MDFILE_AS_MAINPAGE = doc/main_page.md 40 | EXTRACT_ALL = NO 41 | 42 | # Doxygen configuration may also be placed in this file. 43 | # Currently, the following Doxygen configuration options are available. Refer 44 | # to http://doxygen.org/manual/config.html for detailed explanation of the 45 | # options. To request support for more options, contact support@codedocs.xyz. 46 | # 47 | # ABBREVIATE_BRIEF = 48 | # ALIASES = 49 | # ALLEXTERNALS = 50 | # ALLOW_UNICODE_NAMES = 51 | # ALPHABETICAL_INDEX = 52 | # ALWAYS_DETAILED_SEC = 53 | # AUTOLINK_SUPPORT = 54 | # BRIEF_MEMBER_DESC = 55 | # BUILTIN_STL_SUPPORT = 56 | # CALLER_GRAPH = 57 | # CALL_GRAPH = 58 | # CASE_SENSE_NAMES = 59 | # CITE_BIB_FILES = 60 | # CLASS_DIAGRAMS = 61 | # CLASS_GRAPH = 62 | # COLLABORATION_GRAPH = 63 | # COLS_IN_ALPHA_INDEX = 64 | # CPP_CLI_SUPPORT = 65 | # DIAFILE_DIRS = 66 | # DIRECTORY_GRAPH = 67 | # DISABLE_INDEX = 68 | # DISTRIBUTE_GROUP_DOC = 69 | # DOTFILE_DIRS = 70 | # DOT_FONTNAME = 71 | # DOT_FONTSIZE = 72 | # DOT_GRAPH_MAX_NODES = 73 | # DOT_IMAGE_FORMAT = 74 | # DOT_TRANSPARENT = 75 | # DOXYFILE_ENCODING = 76 | # ENABLED_SECTIONS = 77 | # ENABLE_PREPROCESSING = 78 | # ENUM_VALUES_PER_LINE = 79 | # EXAMPLE_PATH = 80 | # EXAMPLE_PATTERNS = 81 | # EXAMPLE_RECURSIVE = 82 | # EXCLUDE = 83 | # EXCLUDE_PATTERNS = 84 | # EXCLUDE_SYMBOLS = 85 | # EXPAND_AS_DEFINED = 86 | # EXPAND_ONLY_PREDEF = 87 | # EXTENSION_MAPPING = 88 | # EXTERNAL_GROUPS = 89 | # EXTERNAL_PAGES = 90 | # EXTRACT_ALL = 91 | # EXTRACT_ANON_NSPACES = 92 | # EXTRACT_LOCAL_CLASSES = 93 | # EXTRACT_LOCAL_METHODS = 94 | # EXTRACT_PACKAGE = 95 | # EXTRACT_PRIVATE = 96 | # EXTRACT_STATIC = 97 | # EXT_LINKS_IN_WINDOW = 98 | # FILE_PATTERNS = 99 | # FORCE_LOCAL_INCLUDES = 100 | # FORMULA_FONTSIZE = 101 | # FORMULA_TRANSPARENT = 102 | # FULL_PATH_NAMES = 103 | # GENERATE_BUGLIST = 104 | # GENERATE_DEPRECATEDLIST = 105 | # GENERATE_LEGEND = 106 | # GENERATE_TESTLIST = 107 | # GENERATE_TODOLIST = 108 | # GENERATE_TREEVIEW = 109 | # GRAPHICAL_HIERARCHY = 110 | # GROUP_GRAPHS = 111 | # GROUP_NESTED_COMPOUNDS = 112 | # HIDE_COMPOUND_REFERENCE= = 113 | # HIDE_FRIEND_COMPOUNDS = 114 | # HIDE_IN_BODY_DOCS = 115 | # HIDE_SCOPE_NAMES = 116 | # HIDE_UNDOC_CLASSES = 117 | # HIDE_UNDOC_MEMBERS = 118 | # HIDE_UNDOC_RELATIONS = 119 | # HTML_COLORSTYLE_GAMMA = 120 | # HTML_COLORSTYLE_HUE = 121 | # HTML_COLORSTYLE_SAT = 122 | # HTML_DYNAMIC_SECTIONS = 123 | # HTML_EXTRA_FILES = 124 | # HTML_EXTRA_STYLESHEET = 125 | # HTML_FOOTER = 126 | # HTML_HEADER = 127 | # HTML_INDEX_NUM_ENTRIES = 128 | # HTML_STYLESHEET = 129 | # HTML_TIMESTAMP = 130 | # IDL_PROPERTY_SUPPORT = 131 | # IGNORE_PREFIX = 132 | # IMAGE_PATH = 133 | # INCLUDED_BY_GRAPH = 134 | # INCLUDE_FILE_PATTERNS = 135 | # INCLUDE_GRAPH = 136 | # INCLUDE_PATH = 137 | # INHERIT_DOCS = 138 | # INLINE_GROUPED_CLASSES = 139 | # INLINE_INFO = 140 | # INLINE_INHERITED_MEMB = 141 | # INLINE_SIMPLE_STRUCTS = 142 | # INLINE_SOURCES = 143 | # INPUT = 144 | # INPUT_ENCODING = 145 | # INTERACTIVE_SVG = 146 | # INTERNAL_DOCS = 147 | # JAVADOC_AUTOBRIEF = 148 | # LAYOUT_FILE = 149 | # MACRO_EXPANSION = 150 | # MARKDOWN_SUPPORT = 151 | # MAX_DOT_GRAPH_DEPTH = 152 | # MSCFILE_DIRS = 153 | # MULTILINE_CPP_IS_BRIEF = 154 | # OPTIMIZE_FOR_FORTRAN = 155 | # OPTIMIZE_OUTPUT_FOR_C = 156 | # OPTIMIZE_OUTPUT_JAVA = 157 | # OPTIMIZE_OUTPUT_VHDL = 158 | # OUTPUT_LANGUAGE = 159 | # PLANTUML_JAR_PATH = 160 | # PREDEFINED = 161 | # PROJECT_BRIEF = 162 | # PROJECT_LOGO = 163 | # PROJECT_NAME = 164 | # PROJECT_NUMBER = 165 | # QT_AUTOBRIEF = 166 | # RECURSIVE = 167 | # REFERENCED_BY_RELATION = 168 | # REFERENCES_LINK_SOURCE = 169 | # REFERENCES_RELATION = 170 | # REPEAT_BRIEF = 171 | # SEARCHENGINE = 172 | # SEARCH_INCLUDES = 173 | # SEPARATE_MEMBER_PAGES = 174 | # SHORT_NAMES = 175 | # SHOW_FILES = 176 | # SHOW_GROUPED_MEMB_INC = 177 | # SHOW_INCLUDE_FILES = 178 | # SHOW_NAMESPACES = 179 | # SHOW_USED_FILES = 180 | # SIP_SUPPORT = 181 | # SKIP_FUNCTION_MACROS = 182 | # SORT_BRIEF_DOCS = 183 | # SORT_BY_SCOPE_NAME = 184 | # SORT_GROUP_NAMES = 185 | # SORT_MEMBERS_CTORS_1ST = 186 | # SORT_MEMBER_DOCS = 187 | # SOURCE_BROWSER = 188 | # SOURCE_TOOLTIPS = 189 | # STRICT_PROTO_MATCHING = 190 | # STRIP_CODE_COMMENTS = 191 | # STRIP_FROM_INC_PATH = 192 | # STRIP_FROM_PATH = 193 | # SUBGROUPING = 194 | # TAB_SIZE = 195 | # TEMPLATE_RELATIONS = 196 | # TREEVIEW_WIDTH = 197 | # TYPEDEF_HIDES_STRUCT = 198 | # UML_LIMIT_NUM_FIELDS = 199 | # UML_LOOK = 200 | # USE_MDFILE_AS_MAINPAGE = 201 | # VERBATIM_HEADERS = 202 | # 203 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | indent_style = space 7 | indent_size = 4 8 | 9 | [*.yml] 10 | indent_size = 2 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/c++,cmake 2 | 3 | ### C++ ### 4 | # Prerequisites 5 | *.d 6 | 7 | # Compiled Object files 8 | *.slo 9 | *.lo 10 | *.o 11 | *.obj 12 | 13 | # Precompiled Headers 14 | *.gch 15 | *.pch 16 | 17 | # Compiled Dynamic libraries 18 | *.so 19 | *.dylib 20 | *.dll 21 | 22 | # Fortran module files 23 | *.mod 24 | *.smod 25 | 26 | # Compiled Static libraries 27 | *.lai 28 | *.la 29 | *.a 30 | *.lib 31 | 32 | # Executables 33 | *.exe 34 | *.out 35 | *.app 36 | 37 | ### CMake ### 38 | CMakeCache.txt 39 | CMakeFiles 40 | CMakeScripts 41 | Testing 42 | Makefile 43 | cmake_install.cmake 44 | install_manifest.txt 45 | compile_commands.json 46 | CTestTestfile.cmake 47 | build 48 | 49 | 50 | # End of https://www.gitignore.io/api/c++,cmake 51 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | 3 | sudo: required 4 | 5 | branches: 6 | only: 7 | - master 8 | - coverity_scan 9 | 10 | env: 11 | global: 12 | # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created 13 | # via the "travis encrypt" command using the project repo's public key 14 | secure: "veAdPtCJipVm1byxjBdwEAmFrTkvPeQTFh2+F+HGoCpzKJloQA3r7TcUSvkw3VKCSdc7fim6YKei3w57N9lR8wjlOdM+HScWims4i9n9t7zFQCbsaOuxxK7nmoFDuRx/9HPoi4px7famfhqRbYDQKcX4wX4XWeO5Ic364oGfXSc5loKSiu40ruseEeSAAyf96QYRRYvfbg2ifQTPTc1mMrE7KXDtyRQPnIWMHE3vFGdmcekqjRuVotUHbkoTZOElnA5dfXIctfJfDIv6ZMF1fLOcqoGqQrBiGqNtZvGZf0vGjmqwURZZOCkmIeBroyQSlneB6uhkes52vjbYMs+3NF7Y7D1kyPFiMaoK4WfjlQ5Z9k6JoBupkOhMLwyklxkks/scZXuI+H0V285fl2E5tdiowCBXn68J5yn1RjiAOLOS20oExLhPwd5cNsUKOmrWbNBlvEq37MKTVyBfu0h2gCVF3xo+H3b2RLzgn39hKppSK0iReVEfOmzhk6yP5QUBZUjemruJeZFp0CG3On8EdUQgIY9gOsFBoAsYkm6ahwvNSdL3Am8zpQMBBjS/WqJ3nNaPKQWqqL4eWG2y4cItjrRiIlczNh+LsJEP5vescEdiF+fx0hpCBy0B7LrOLUn7bGcPSOPV3XmqPesK5HaDE1bwgZ1ZjebdioTHfk+YHEs=" 15 | 16 | matrix: 17 | include: 18 | # Coverity Scan (Linux Debug) 19 | - os: linux 20 | compiler: gcc 21 | before_install: 22 | - echo -n | openssl s_client -connect https://scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca- 23 | addons: 24 | apt: 25 | sources: 26 | - ubuntu-toolchain-r-test 27 | packages: 28 | - g++-5 29 | - cmake 30 | coverity_scan: 31 | project: 32 | name: "arnavb/cpp14-project-template" 33 | description: "A cross-platform C++14 project template" 34 | notification_email: arnavborborah11@gmail.com 35 | build_command_prepend: "cov-configure --comptype gcc --compiler g++-5 --template && cmake -DCMAKE_CXX_COMPILER=g++-5 -DGEN_DOCS=OFF ." 36 | build_command: "cmake --build ." 37 | branch_pattern: coverity_scan 38 | if: branch = coverity_scan 39 | before_script: echo "Coverity Scan" 40 | script: echo "Coverity Scan" 41 | # Code coverage (Linux Debug) 42 | - os: linux 43 | compiler: gcc 44 | addons: 45 | apt: 46 | sources: 47 | - ubuntu-toolchain-r-test 48 | packages: 49 | - g++-5 50 | - cmake 51 | - lcov 52 | before_script: 53 | - mkdir -p build && cd build 54 | - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=g++-5 -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DGEN_DOCS=OFF .. 55 | script: 56 | - cmake --build . -- -j2 57 | - cmake --build . --target coverage 58 | after_success: 59 | - bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports" 60 | if: branch != coverity_scan 61 | # Linux Release 62 | - os: linux 63 | compiler: gcc 64 | addons: 65 | apt: 66 | sources: 67 | - ubuntu-toolchain-r-test 68 | packages: 69 | - g++-5 70 | - cmake 71 | env: 72 | - MATRIX_EVAL="COMPILER=g++-5 && BUILD_TYPE=Release" 73 | if: branch != coverity_scan 74 | # OSX Debug 75 | - os: osx 76 | osx_image: xcode9.2 77 | compiler: clang 78 | env: 79 | - MATRIX_EVAL="COMPILER=clang++ && BUILD_TYPE=Debug" 80 | if: branch != coverity_scan 81 | # OSX Release 82 | - os: osx 83 | osx_image: xcode9.2 84 | compiler: clang 85 | env: 86 | - MATRIX_EVAL="COMPILER=clang++ && BUILD_TYPE=Release" 87 | if: branch != coverity_scan 88 | 89 | before_install: 90 | - eval "${MATRIX_EVAL}" 91 | 92 | before_script: 93 | - mkdir -p build && cd build 94 | - cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_COMPILER=$COMPILER -DBUILD_TESTS=ON -DGEN_DOCS=OFF .. 95 | 96 | script: 97 | - cmake --build . -- -j2 # Build the code 98 | - ctest --output-on-failure 99 | - sudo cmake --build . --target install # Install the necessary files 100 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.1) 2 | 3 | project(Project-Name) 4 | 5 | set(Project-Name_VERSION_MAJOR 0) 6 | set(Project-Name_VERSION_MINOR 1) 7 | set(Project-Name_VERSION_PATCH 0) 8 | set(Project-Name_VERSION "${Project-Name_VERSION_MAJOR}.${Project-Name_VERSION_MINOR}.${Project-Name_VERSION_PATCH}") 9 | 10 | set(PROJ_NAME "\"Project Name\"") # PROJECT_NAME is a predefined variable 11 | set(PROJECT_DESCRIPTION "\"A cross-platform C++14 project template\"") 12 | 13 | configure_file(include/project-abbr/config.hpp.in 14 | ${CMAKE_BINARY_DIR}/include/project-abbr/config.hpp 15 | ) 16 | 17 | set(CMAKE_CXX_STANDARD 14) 18 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 19 | set(CMAKE_CXX_EXTENSIONS OFF) 20 | 21 | # Options 22 | option(BUILD_TESTS "Build test executable" OFF) 23 | option(GEN_DOCS "Generate documentation" ON) 24 | option(ENABLE_COVERAGE "Enable code coverage" OFF) 25 | 26 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") 27 | 28 | if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) 29 | message(STATUS "Setting build type to 'Release' as no build type was specified") 30 | set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the build type (Debug/Release)" FORCE) 31 | endif (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) 32 | 33 | if (ENABLE_COVERAGE AND NOT CMAKE_CONFIGURATION_TYPES) 34 | if (NOT BUILD_TESTS) 35 | message(FATAL_ERROR "Tests must be enabled for code coverage!") 36 | endif (NOT BUILD_TESTS) 37 | 38 | include(CodeCoverage) 39 | 40 | append_coverage_compiler_flags() 41 | set(COVERAGE_EXCLUDES "/usr/include/\\*;${CMAKE_SOURCE_DIR}/src/main.cpp;${CMAKE_SOURCE_DIR}/test/*;${CMAKE_SOURCE_DIR}/third_party/doctest/*") 42 | 43 | setup_target_for_coverage(NAME coverage EXECUTABLE ctest DEPENDENCIES coverage) 44 | else (ENABLE_COVERAGE AND NOT CMAKE_CONFIGURATION_TYPES) 45 | if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") 46 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror") 47 | set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g") 48 | set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") 49 | elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") 50 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX") 51 | set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2") 52 | endif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") 53 | endif (ENABLE_COVERAGE AND NOT CMAKE_CONFIGURATION_TYPES) 54 | 55 | set(LIBRARY_SOURCES 56 | src/factorial.cpp 57 | src/hello_world.cpp 58 | ) 59 | 60 | add_library(Project-Name-lib ${LIBRARY_SOURCES}) # A library 61 | set_target_properties(Project-Name-lib PROPERTIES PREFIX "") # Remove the lib prefix 62 | target_include_directories(Project-Name-lib PUBLIC ${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/include) 63 | 64 | add_executable(Project-Name src/main.cpp) # The main executable 65 | target_link_libraries(Project-Name Project-Name-lib) # Link our sources to the executable 66 | 67 | if (BUILD_TESTS) 68 | include(CTest) 69 | enable_testing() 70 | add_subdirectory(test) 71 | endif (BUILD_TESTS) 72 | 73 | if (GEN_DOCS) 74 | add_subdirectory(doc) 75 | endif (GEN_DOCS) 76 | 77 | # Install the built library and executable into the appropriate directory 78 | install(TARGETS Project-Name DESTINATION bin) 79 | install(TARGETS Project-Name-lib 80 | ARCHIVE DESTINATION lib 81 | LIBRARY DESTINATION lib 82 | RUNTIME DESTINATION bin 83 | ) 84 | 85 | # Install the project header files into the appropriate directory 86 | install(DIRECTORY include/ DESTINATION include PATTERN "config.hpp.in" EXCLUDE) # Install our main header files 87 | install(FILES ${CMAKE_BINARY_DIR}/include/project-abbr/config.hpp DESTINATION include/project-abbr) # Install our configuration file 88 | 89 | # Install the project's extra files 90 | install(FILES README.md LICENSE DESTINATION share/project-abbr) 91 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Project Name 2 | 3 | [![Travis Build Status](https://travis-ci.org/arnavb/cpp14-project-template.svg?branch=master)](https://travis-ci.org/arnavb/cpp14-project-template) 4 | [![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/qvt257817g7c66m9/branch/master?svg=true)](https://ci.appveyor.com/project/arnavb/cpp14-project-template/branch/master) 5 | [![Coverity Scan Build Status](https://scan.coverity.com/projects/15312/badge.svg)](https://scan.coverity.com/projects/arnavb-cpp14-project-template) 6 | [![codecov](https://codecov.io/gh/arnavb/cpp14-project-template/branch/master/graph/badge.svg)](https://codecov.io/gh/arnavb/cpp14-project-template) 7 | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/1c76469660ca411fa1f92ce0ef0c5cd3)](https://www.codacy.com/app/arnavb/cpp14-project-template?utm_source=github.com&utm_medium=referral&utm_content=arnavb/cpp14-project-template&utm_campaign=Badge_Grade) 8 | [![Documentation](https://codedocs.xyz/arnavb/cpp14-project-template.svg)](https://codedocs.xyz/arnavb/cpp14-project-template/) 9 | 10 | A simple, cross-platform, and continuously integrated C++14 project template. 11 | 12 | Making cross platform C++ projects is widely known to be a troublesome ambition. This project attempts to demystify many of the common problems related to creating such a structure by providing a simple template that achieves this purpose. 13 | 14 | ## Getting Started 15 | 16 | ### Configuring the Template 17 | 18 | (Unfortunately, a setup script isn't currently available but is being worked on in [#3](https://github.com/arnavb/cpp14-project-template/pull/3). Until it is, however, these steps have to be followed manually.) 19 | 20 | In order to use this project, all you have to do is follow a few (Ok, more than a few) simple steps: 21 | 22 | 1. `git clone` this project into a directory of choice. 23 | 2. Open the file `.codedocs` and replace the variables `PROJECT_NAME`, `PROJECT_NUMBER`, and `PROJECT_NUMBER` with their corresponding values. 24 | 3. Open the file `.travis.yml`, and replace the encrypted Coverity Scan token with the one for your project. In addition, modify the variables in the following section with their corresponding values: 25 | ``` 26 | project: 27 | name: "arnavb/cpp14-project-template" 28 | description: "A cross-platform C++14 project template" 29 | notification_email: arnavborborah11@gmail.com 30 | ``` 31 | 4. In `./CMakeLists.txt`, modify: 32 | 1. `Project-Name` to match your project name. 33 | 2. `Project-Name_VERSION_MAJOR`, `Project-Name_VERSION_MINOR`, and `Project-Name_VERSION_PATCH` to match the versioning of your project. Make sure to modify the names of the variables as well! 34 | 3. Modify `PROJ_NAME` to be the name of your project. 35 | 4. Do the same for `PROJECT_DESCRIPTION`. 36 | 5. If you are building just a library, then remove `${CMAKE_SOURCE_DIR}/src/main.cpp` from `COVERAGE_EXCLUDES`. 37 | 6. Modify the `LIBRARY_SOURCES` variable to match your project sources. Exclude `main.cpp`, if it exists. 38 | 7. If you are building a standalone library, then remove the following lines: 39 | ``` 40 | add_executable(Project-Name main.cpp) # The main executable 41 | target_link_libraries(Project-Name Project-Name-lib) # Link our sources to the executable 42 | ``` 43 | And later on in the file, remove: 44 | ``` 45 | # Install the built library and executable into the appropriate directory 46 | install(TARGETS Project-Name DESTINATION bin) 47 | ``` 48 | 8. Change the name `Project-Name` and `Project-Name-lib` to match your project name. 49 | 9. Change: 50 | ``` 51 | install(FILES ${CMAKE_BINARY_DIR}/include/project-abbr/config.hpp DESTINATION include/project-abbr) # Install our configuration file 52 | ``` 53 | to match the new folder name for your project, as described in step 8. 54 | 5. Modify `LICENSE` to match your software license. 55 | 6. Modify this file (`README.md`) to match the details of your project. You may want to keep the build steps, however. 56 | 7. Open the folder `doc`. Then: 57 | 1. Delete all the markdown pages from this directory and replace them with your own. 58 | 2. If a main page is needed, it needs to be in a file called `main_page.md`. 59 | 8. Open the folder `include`. Then: 60 | 1. Change the name of the folder `project-abbr` to something that matches your project (name or abbreviation). Delete all the files _except_ `config.hpp.in` in this directory and replace them with your public include files, if they exist. 61 | 9. Open the folder `src`. Then: 62 | 1. Remove all of the `.cpp` files in this folder and replace them with your source files and private includes. 63 | 10. Open the folder `test`. Then: 64 | 1. Replace all the files in this directory _except_ for `test_runner.cpp` with your doctest unit testing files. 65 | 2. In `test/CMakeLists.txt`, change `Project-Name-lib` to match the new name of your library. In addition, modify the `TEST_SOURCES` variable to match your new test files. 66 | 11. Delete the _by default hidden_ `.git` folder and then run `git init` to get a new repository! 67 | 68 | For details on how to set up the various continuous integration tools used in this project, check the [documentation](https://codedocs.xyz/arnavb/cpp14-project-template/setting_up_documentation.html). 69 | 70 | ### Building the Code 71 | 72 | #### Prerequisites 73 | The following tools must be preinstalled before using this template: 74 | - [`CMake`](https://cmake.org/install/) (At least v3.1): For building the code. 75 | - [`Doxygen`](https://www.stack.nl/~dimitri/doxygen/manual/install.html): For generating documentation. 76 | - [`LCOV`](http://ltp.sourceforge.net/coverage/lcov.php): For generating code coverage. 77 | 78 | In the snippets below, `CONFIGURATION` needs to be a valid [CMake configuration](https://cmake.org/cmake/help/v3.11/variable/CMAKE_BUILD_TYPE.html). 79 | 80 | #### Linux/OSX 81 | 82 | mkdir build && cd build 83 | cmake -D -DCMAKE_BUILD_TYPE=CONFIGURATION .. 84 | make 85 | make install 86 | 87 | #### Windows 88 | 89 | mkdir build && cd build 90 | cmake -D .. 91 | cmake --build --config CONFIGURATION . 92 | cmake --build --target INSTALL --config CONFIGURATION . 93 | 94 | For more details on configuration options and build targets, see the [documentation](https://codedocs.xyz/arnavb/cpp14-project-template/variables_and_targets.html). 95 | 96 | ## Running the Tests 97 | 98 | In order to run the tests, the option `BUILD_TESTS` needs to be set to `ON` during configuration. Then, invoking the tests is as simple as running: 99 | 100 | ctest 101 | 102 | ### Code Coverage 103 | 104 | In order to get the test coverage of the code, the option `ENABLE_COVERAGE` needs to be set to `ON` during configuration. In addition, `CMAKE_BUILD_TYPE` should be set to `Debug` (code coverage isn't supported for multi-config generators yet). Then, a coverage report can be generated by running: 105 | 106 | make coverage 107 | 108 | The resulting coverage will be placed in a directory called `coverage` in the build folder. 109 | 110 | ## Documentation 111 | 112 | The documentation for this project (sample code and usage of this project) is hosted on [codedocs.xyz](https://codedocs.xyz/arnavb/cpp14-project-template/index.html). 113 | 114 | Documentation about build targets, CMake options, the directory structure used, and documentation are all available in the link above. 115 | 116 | ## License 117 | 118 | ![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png) 119 | 120 | To the extent possible under law, [Arnav Borborah](https://github.com/arnavb/cpp14-project-template) has waived all copyright and related or neighboring rights to C++14 Project Template. This work is published from: United States. 121 | 122 | The above basically means that while you do not have to give me attribution for this template, it would be gladly appreciated! 123 | -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | version: "{branch}-build-{build}" 2 | 3 | branches: 4 | only: 5 | - master 6 | 7 | os: 8 | - Visual Studio 2017 9 | 10 | init: 11 | - git config --global core.autocrlf input 12 | 13 | install: 14 | - git submodule update --init --recursive 15 | 16 | platform: 17 | - Win32 18 | - x64 19 | 20 | configuration: 21 | - Debug 22 | - Release 23 | 24 | before_build: 25 | - mkdir build && cd build 26 | - cmake -A%PLATFORM% -DBUILD_TESTS=ON -DGEN_DOCS=OFF .. 27 | 28 | build_script: 29 | - cmake --build . --config %CONFIGURATION% -- %MSBUILD_ARGS% # Build the code 30 | - ctest -C %CONFIGURATION% # Run tests 31 | - cmake --build . --config %CONFIGURATION% --target INSTALL -- %MSBUILD_ARGS% # Install the necessary files 32 | -------------------------------------------------------------------------------- /cmake/Modules/CodeCoverage.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2012 - 2017, Lars Bilke 2 | # All rights reserved. 3 | # 4 | # Redistribution and use in source and binary forms, with or without modification, 5 | # are permitted provided that the following conditions are met: 6 | # 7 | # 1. Redistributions of source code must retain the above copyright notice, this 8 | # list of conditions and the following disclaimer. 9 | # 10 | # 2. Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions and the following disclaimer in the documentation 12 | # and/or other materials provided with the distribution. 13 | # 14 | # 3. Neither the name of the copyright holder nor the names of its contributors 15 | # may be used to endorse or promote products derived from this software without 16 | # specific prior written permission. 17 | # 18 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 22 | # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 | # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 25 | # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 27 | # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | # 29 | # CHANGES: 30 | # 31 | # 2012-01-31, Lars Bilke 32 | # - Enable Code Coverage 33 | # 34 | # 2013-09-17, Joakim Söderberg 35 | # - Added support for Clang. 36 | # - Some additional usage instructions. 37 | # 38 | # 2016-02-03, Lars Bilke 39 | # - Refactored functions to use named parameters 40 | # 41 | # 2017-06-02, Lars Bilke 42 | # - Merged with modified version from github.com/ufz/ogs 43 | # 44 | # 45 | # USAGE: 46 | # 47 | # 1. Copy this file into your cmake modules path. 48 | # 49 | # 2. Add the following line to your CMakeLists.txt: 50 | # include(CodeCoverage) 51 | # 52 | # 3. Append necessary compiler flags: 53 | # APPEND_COVERAGE_COMPILER_FLAGS() 54 | # 55 | # 4. If you need to exclude additional directories from the report, specify them 56 | # using the COVERAGE_EXCLUDES variable before calling SETUP_TARGET_FOR_COVERAGE. 57 | # Example: 58 | # set(COVERAGE_EXCLUDES 'dir1/*' 'dir2/*') 59 | # 60 | # 5. Use the functions described below to create a custom make target which 61 | # runs your test executable and produces a code coverage report. 62 | # 63 | # 6. Build a Debug build: 64 | # cmake -DCMAKE_BUILD_TYPE=Debug .. 65 | # make 66 | # make my_coverage_target 67 | # 68 | 69 | include(CMakeParseArguments) 70 | 71 | # Check prereqs 72 | find_program( GCOV_PATH gcov ) 73 | find_program( LCOV_PATH NAMES lcov lcov.bat lcov.exe lcov.perl) 74 | find_program( GENHTML_PATH NAMES genhtml genhtml.perl genhtml.bat ) 75 | find_program( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/scripts/test) 76 | find_program( SIMPLE_PYTHON_EXECUTABLE python ) 77 | 78 | if(NOT GCOV_PATH) 79 | message(FATAL_ERROR "gcov not found! Aborting...") 80 | endif() # NOT GCOV_PATH 81 | 82 | if("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang") 83 | if("${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 3) 84 | message(FATAL_ERROR "Clang version must be 3.0.0 or greater! Aborting...") 85 | endif() 86 | elseif(NOT CMAKE_COMPILER_IS_GNUCXX) 87 | message(FATAL_ERROR "Compiler is not GNU gcc! Aborting...") 88 | endif() 89 | 90 | set(COVERAGE_COMPILER_FLAGS "-g -O0 --coverage -fprofile-arcs -ftest-coverage" 91 | CACHE INTERNAL "") 92 | 93 | set(CMAKE_CXX_FLAGS_COVERAGE 94 | ${COVERAGE_COMPILER_FLAGS} 95 | CACHE STRING "Flags used by the C++ compiler during coverage builds." 96 | FORCE ) 97 | set(CMAKE_C_FLAGS_COVERAGE 98 | ${COVERAGE_COMPILER_FLAGS} 99 | CACHE STRING "Flags used by the C compiler during coverage builds." 100 | FORCE ) 101 | set(CMAKE_EXE_LINKER_FLAGS_COVERAGE 102 | "" 103 | CACHE STRING "Flags used for linking binaries during coverage builds." 104 | FORCE ) 105 | set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE 106 | "" 107 | CACHE STRING "Flags used by the shared libraries linker during coverage builds." 108 | FORCE ) 109 | mark_as_advanced( 110 | CMAKE_CXX_FLAGS_COVERAGE 111 | CMAKE_C_FLAGS_COVERAGE 112 | CMAKE_EXE_LINKER_FLAGS_COVERAGE 113 | CMAKE_SHARED_LINKER_FLAGS_COVERAGE ) 114 | 115 | if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") 116 | message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading") 117 | endif() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug" 118 | 119 | if(CMAKE_C_COMPILER_ID STREQUAL "GNU") 120 | link_libraries(gcov) 121 | else() 122 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") 123 | endif() 124 | 125 | # Defines a target for running and collection code coverage information 126 | # Builds dependencies, runs the given executable and outputs reports. 127 | # NOTE! The executable should always have a ZERO as exit code otherwise 128 | # the coverage generation will not complete. 129 | # 130 | # SETUP_TARGET_FOR_COVERAGE( 131 | # NAME testrunner_coverage # New target name 132 | # EXECUTABLE testrunner -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR 133 | # DEPENDENCIES testrunner # Dependencies to build first 134 | # ) 135 | function(SETUP_TARGET_FOR_COVERAGE) 136 | 137 | set(options NONE) 138 | set(oneValueArgs NAME) 139 | set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) 140 | cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) 141 | 142 | if(NOT LCOV_PATH) 143 | message(FATAL_ERROR "lcov not found! Aborting...") 144 | endif() # NOT LCOV_PATH 145 | 146 | if(NOT GENHTML_PATH) 147 | message(FATAL_ERROR "genhtml not found! Aborting...") 148 | endif() # NOT GENHTML_PATH 149 | 150 | # Setup target 151 | add_custom_target(${Coverage_NAME} 152 | 153 | # Cleanup lcov 154 | COMMAND ${LCOV_PATH} --directory . --zerocounters 155 | # Create baseline to make sure untouched files show up in the report 156 | COMMAND ${LCOV_PATH} -c -i -d . -o ${Coverage_NAME}.base 157 | 158 | # Run tests 159 | COMMAND ${Coverage_EXECUTABLE} 160 | 161 | # Capturing lcov counters and generating report 162 | COMMAND ${LCOV_PATH} --directory . --capture --output-file ${Coverage_NAME}.info 163 | # add baseline counters 164 | COMMAND ${LCOV_PATH} -a ${Coverage_NAME}.base -a ${Coverage_NAME}.info --output-file ${Coverage_NAME}.total 165 | COMMAND ${LCOV_PATH} --remove ${Coverage_NAME}.total ${COVERAGE_EXCLUDES} --output-file ${PROJECT_BINARY_DIR}/${Coverage_NAME}.info.cleaned 166 | COMMAND ${GENHTML_PATH} -o ${Coverage_NAME} ${PROJECT_BINARY_DIR}/${Coverage_NAME}.info.cleaned 167 | COMMAND ${CMAKE_COMMAND} -E remove ${Coverage_NAME}.base ${Coverage_NAME}.total ${PROJECT_BINARY_DIR}/${Coverage_NAME}.info.cleaned 168 | 169 | WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 170 | DEPENDS ${Coverage_DEPENDENCIES} 171 | COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report." 172 | ) 173 | 174 | # Show where to find the lcov info report 175 | add_custom_command(TARGET ${Coverage_NAME} POST_BUILD 176 | COMMAND ; 177 | COMMENT "Lcov code coverage info report saved in ${Coverage_NAME}.info." 178 | ) 179 | 180 | # Show info where to find the report 181 | add_custom_command(TARGET ${Coverage_NAME} POST_BUILD 182 | COMMAND ; 183 | COMMENT "Open ./${Coverage_NAME}/index.html in your browser to view the coverage report." 184 | ) 185 | 186 | endfunction() # SETUP_TARGET_FOR_COVERAGE 187 | 188 | # Defines a target for running and collection code coverage information 189 | # Builds dependencies, runs the given executable and outputs reports. 190 | # NOTE! The executable should always have a ZERO as exit code otherwise 191 | # the coverage generation will not complete. 192 | # 193 | # SETUP_TARGET_FOR_COVERAGE_COBERTURA( 194 | # NAME ctest_coverage # New target name 195 | # EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR 196 | # DEPENDENCIES executable_target # Dependencies to build first 197 | # ) 198 | function(SETUP_TARGET_FOR_COVERAGE_COBERTURA) 199 | 200 | set(options NONE) 201 | set(oneValueArgs NAME) 202 | set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) 203 | cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) 204 | 205 | if(NOT SIMPLE_PYTHON_EXECUTABLE) 206 | message(FATAL_ERROR "python not found! Aborting...") 207 | endif() # NOT SIMPLE_PYTHON_EXECUTABLE 208 | 209 | if(NOT GCOVR_PATH) 210 | message(FATAL_ERROR "gcovr not found! Aborting...") 211 | endif() # NOT GCOVR_PATH 212 | 213 | # Combine excludes to several -e arguments 214 | set(COBERTURA_EXCLUDES "") 215 | foreach(EXCLUDE ${COVERAGE_EXCLUDES}) 216 | set(COBERTURA_EXCLUDES "-e ${EXCLUDE} ${COBERTURA_EXCLUDES}") 217 | endforeach() 218 | 219 | add_custom_target(${Coverage_NAME} 220 | 221 | # Run tests 222 | ${Coverage_EXECUTABLE} 223 | 224 | # Running gcovr 225 | COMMAND ${GCOVR_PATH} -x -r ${CMAKE_SOURCE_DIR} ${COBERTURA_EXCLUDES} 226 | -o ${Coverage_NAME}.xml 227 | WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 228 | DEPENDS ${Coverage_DEPENDENCIES} 229 | COMMENT "Running gcovr to produce Cobertura code coverage report." 230 | ) 231 | 232 | # Show info where to find the report 233 | add_custom_command(TARGET ${Coverage_NAME} POST_BUILD 234 | COMMAND ; 235 | COMMENT "Cobertura code coverage report saved in ${Coverage_NAME}.xml." 236 | ) 237 | 238 | endfunction() # SETUP_TARGET_FOR_COVERAGE_COBERTURA 239 | 240 | function(APPEND_COVERAGE_COMPILER_FLAGS) 241 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE) 242 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE) 243 | message(STATUS "Appending code coverage compiler flags: ${COVERAGE_COMPILER_FLAGS}") 244 | endfunction() # APPEND_COVERAGE_COMPILER_FLAGS 245 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | ignore: 2 | - "test/" 3 | - "third_party/**/*" 4 | 5 | comment: 6 | layout: "header, diff, files" 7 | behavior: default 8 | require_changes: true 9 | -------------------------------------------------------------------------------- /doc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package(Doxygen) 2 | 3 | if (DOXYGEN_FOUND) 4 | set(DOXYGEN_IN Doxyfile.in) 5 | set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) 6 | 7 | configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) 8 | 9 | add_custom_target(doc 10 | COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} 11 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 12 | VERBATIM 13 | ) 14 | 15 | # Install the project's HTML documentation 16 | install(DIRECTORY ${CMAKE_BINARY_DIR}/doc/html/ DESTINATION share/project-abbr/doc) 17 | else (DOXYGEN_FOUND) 18 | message(FATAL_ERROR "Doxygen needs to be installed to generate documentation!") 19 | endif (DOXYGEN_FOUND) 20 | -------------------------------------------------------------------------------- /doc/Doxyfile.in: -------------------------------------------------------------------------------- 1 | # Doxyfile 1.8.8 2 | 3 | # This file describes the settings to be used by the documentation system 4 | # doxygen (www.doxygen.org) for a project. 5 | # 6 | # All text after a double hash (##) is considered a comment and is placed in 7 | # front of the TAG it is preceding. 8 | # 9 | # All text after a single hash (#) is considered a comment and will be ignored. 10 | # The format is: 11 | # TAG = value [value, ...] 12 | # For lists, items can also be appended using: 13 | # TAG += value [value, ...] 14 | # Values that contain spaces should be placed between quotes (\" \"). 15 | 16 | #--------------------------------------------------------------------------- 17 | # Project related configuration options 18 | #--------------------------------------------------------------------------- 19 | 20 | # This tag specifies the encoding used for all characters in the config file 21 | # that follow. The default is UTF-8 which is also the encoding used for all text 22 | # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv 23 | # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv 24 | # for the list of possible encodings. 25 | # The default value is: UTF-8. 26 | 27 | DOXYFILE_ENCODING = UTF-8 28 | 29 | # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by 30 | # double-quotes, unless you are using Doxywizard) that should identify the 31 | # project for which the documentation is generated. This name is used in the 32 | # title of most generated pages and in a few other places. 33 | # The default value is: My Project. 34 | 35 | PROJECT_NAME = @PROJ_NAME@ 36 | 37 | # The PROJECT_NUMBER tag can be used to enter a project or revision number. This 38 | # could be handy for archiving the generated documentation or if some version 39 | # control system is used. 40 | 41 | PROJECT_NUMBER = @Project-Name_VERSION@ 42 | 43 | # Using the PROJECT_BRIEF tag one can provide an optional one line description 44 | # for a project that appears at the top of each page and should give viewer a 45 | # quick idea about the purpose of the project. Keep the description short. 46 | 47 | PROJECT_BRIEF = @PROJECT_DESCRIPTION@ 48 | 49 | # With the PROJECT_LOGO tag one can specify an logo or icon that is included in 50 | # the documentation. The maximum height of the logo should not exceed 55 pixels 51 | # and the maximum width should not exceed 200 pixels. Doxygen will copy the logo 52 | # to the output directory. 53 | 54 | PROJECT_LOGO = 55 | 56 | # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path 57 | # into which the generated documentation will be written. If a relative path is 58 | # entered, it will be relative to the location where doxygen was started. If 59 | # left blank the current directory will be used. 60 | 61 | OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc/ 62 | 63 | # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- 64 | # directories (in 2 levels) under the output directory of each output format and 65 | # will distribute the generated files over these directories. Enabling this 66 | # option can be useful when feeding doxygen a huge amount of source files, where 67 | # putting all generated files in the same directory would otherwise causes 68 | # performance problems for the file system. 69 | # The default value is: NO. 70 | 71 | CREATE_SUBDIRS = NO 72 | 73 | # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII 74 | # characters to appear in the names of generated files. If set to NO, non-ASCII 75 | # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode 76 | # U+3044. 77 | # The default value is: NO. 78 | 79 | ALLOW_UNICODE_NAMES = NO 80 | 81 | # The OUTPUT_LANGUAGE tag is used to specify the language in which all 82 | # documentation generated by doxygen is written. Doxygen will use this 83 | # information to generate all constant output in the proper language. 84 | # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, 85 | # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), 86 | # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, 87 | # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), 88 | # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, 89 | # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, 90 | # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, 91 | # Ukrainian and Vietnamese. 92 | # The default value is: English. 93 | 94 | OUTPUT_LANGUAGE = English 95 | 96 | # If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member 97 | # descriptions after the members that are listed in the file and class 98 | # documentation (similar to Javadoc). Set to NO to disable this. 99 | # The default value is: YES. 100 | 101 | BRIEF_MEMBER_DESC = YES 102 | 103 | # If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief 104 | # description of a member or function before the detailed description 105 | # 106 | # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 107 | # brief descriptions will be completely suppressed. 108 | # The default value is: YES. 109 | 110 | REPEAT_BRIEF = YES 111 | 112 | # This tag implements a quasi-intelligent brief description abbreviator that is 113 | # used to form the text in various listings. Each string in this list, if found 114 | # as the leading text of the brief description, will be stripped from the text 115 | # and the result, after processing the whole list, is used as the annotated 116 | # text. Otherwise, the brief description is used as-is. If left blank, the 117 | # following values are used ($name is automatically replaced with the name of 118 | # the entity):The $name class, The $name widget, The $name file, is, provides, 119 | # specifies, contains, represents, a, an and the. 120 | 121 | ABBREVIATE_BRIEF = 122 | 123 | # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 124 | # doxygen will generate a detailed section even if there is only a brief 125 | # description. 126 | # The default value is: NO. 127 | 128 | ALWAYS_DETAILED_SEC = NO 129 | 130 | # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 131 | # inherited members of a class in the documentation of that class as if those 132 | # members were ordinary class members. Constructors, destructors and assignment 133 | # operators of the base classes will not be shown. 134 | # The default value is: NO. 135 | 136 | INLINE_INHERITED_MEMB = NO 137 | 138 | # If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path 139 | # before files name in the file list and in the header files. If set to NO the 140 | # shortest path that makes the file name unique will be used 141 | # The default value is: YES. 142 | 143 | FULL_PATH_NAMES = YES 144 | 145 | # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. 146 | # Stripping is only done if one of the specified strings matches the left-hand 147 | # part of the path. The tag can be used to show relative paths in the file list. 148 | # If left blank the directory from which doxygen is run is used as the path to 149 | # strip. 150 | # 151 | # Note that you can specify absolute paths here, but also relative paths, which 152 | # will be relative from the directory where doxygen is started. 153 | # This tag requires that the tag FULL_PATH_NAMES is set to YES. 154 | 155 | STRIP_FROM_PATH = 156 | 157 | # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the 158 | # path mentioned in the documentation of a class, which tells the reader which 159 | # header file to include in order to use a class. If left blank only the name of 160 | # the header file containing the class definition is used. Otherwise one should 161 | # specify the list of include paths that are normally passed to the compiler 162 | # using the -I flag. 163 | 164 | STRIP_FROM_INC_PATH = 165 | 166 | # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but 167 | # less readable) file names. This can be useful is your file systems doesn't 168 | # support long names like on DOS, Mac, or CD-ROM. 169 | # The default value is: NO. 170 | 171 | SHORT_NAMES = NO 172 | 173 | # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the 174 | # first line (until the first dot) of a Javadoc-style comment as the brief 175 | # description. If set to NO, the Javadoc-style will behave just like regular Qt- 176 | # style comments (thus requiring an explicit @brief command for a brief 177 | # description.) 178 | # The default value is: NO. 179 | 180 | JAVADOC_AUTOBRIEF = NO 181 | 182 | # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first 183 | # line (until the first dot) of a Qt-style comment as the brief description. If 184 | # set to NO, the Qt-style will behave just like regular Qt-style comments (thus 185 | # requiring an explicit \brief command for a brief description.) 186 | # The default value is: NO. 187 | 188 | QT_AUTOBRIEF = NO 189 | 190 | # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a 191 | # multi-line C++ special comment block (i.e. a block of //! or /// comments) as 192 | # a brief description. This used to be the default behavior. The new default is 193 | # to treat a multi-line C++ comment block as a detailed description. Set this 194 | # tag to YES if you prefer the old behavior instead. 195 | # 196 | # Note that setting this tag to YES also means that rational rose comments are 197 | # not recognized any more. 198 | # The default value is: NO. 199 | 200 | MULTILINE_CPP_IS_BRIEF = NO 201 | 202 | # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the 203 | # documentation from any documented member that it re-implements. 204 | # The default value is: YES. 205 | 206 | INHERIT_DOCS = YES 207 | 208 | # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a 209 | # new page for each member. If set to NO, the documentation of a member will be 210 | # part of the file/class/namespace that contains it. 211 | # The default value is: NO. 212 | 213 | SEPARATE_MEMBER_PAGES = NO 214 | 215 | # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen 216 | # uses this value to replace tabs by spaces in code fragments. 217 | # Minimum value: 1, maximum value: 16, default value: 4. 218 | 219 | TAB_SIZE = 4 220 | 221 | # This tag can be used to specify a number of aliases that act as commands in 222 | # the documentation. An alias has the form: 223 | # name=value 224 | # For example adding 225 | # "sideeffect=@par Side Effects:\n" 226 | # will allow you to put the command \sideeffect (or @sideeffect) in the 227 | # documentation, which will result in a user-defined paragraph with heading 228 | # "Side Effects:". You can put \n's in the value part of an alias to insert 229 | # newlines. 230 | 231 | ALIASES = 232 | 233 | # This tag can be used to specify a number of word-keyword mappings (TCL only). 234 | # A mapping has the form "name=value". For example adding "class=itcl::class" 235 | # will allow you to use the command class in the itcl::class meaning. 236 | 237 | TCL_SUBST = 238 | 239 | # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 240 | # only. Doxygen will then generate output that is more tailored for C. For 241 | # instance, some of the names that are used will be different. The list of all 242 | # members will be omitted, etc. 243 | # The default value is: NO. 244 | 245 | OPTIMIZE_OUTPUT_FOR_C = NO 246 | 247 | # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or 248 | # Python sources only. Doxygen will then generate output that is more tailored 249 | # for that language. For instance, namespaces will be presented as packages, 250 | # qualified scopes will look different, etc. 251 | # The default value is: NO. 252 | 253 | OPTIMIZE_OUTPUT_JAVA = NO 254 | 255 | # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 256 | # sources. Doxygen will then generate output that is tailored for Fortran. 257 | # The default value is: NO. 258 | 259 | OPTIMIZE_FOR_FORTRAN = NO 260 | 261 | # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 262 | # sources. Doxygen will then generate output that is tailored for VHDL. 263 | # The default value is: NO. 264 | 265 | OPTIMIZE_OUTPUT_VHDL = NO 266 | 267 | # Doxygen selects the parser to use depending on the extension of the files it 268 | # parses. With this tag you can assign which parser to use for a given 269 | # extension. Doxygen has a built-in mapping, but you can override or extend it 270 | # using this tag. The format is ext=language, where ext is a file extension, and 271 | # language is one of the parsers supported by doxygen: IDL, Java, Javascript, 272 | # C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: 273 | # FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: 274 | # Fortran. In the later case the parser tries to guess whether the code is fixed 275 | # or free formatted code, this is the default for Fortran type files), VHDL. For 276 | # instance to make doxygen treat .inc files as Fortran files (default is PHP), 277 | # and .f files as C (default is Fortran), use: inc=Fortran f=C. 278 | # 279 | # Note For files without extension you can use no_extension as a placeholder. 280 | # 281 | # Note that for custom extensions you also need to set FILE_PATTERNS otherwise 282 | # the files are not read by doxygen. 283 | 284 | EXTENSION_MAPPING = 285 | 286 | # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments 287 | # according to the Markdown format, which allows for more readable 288 | # documentation. See http://daringfireball.net/projects/markdown/ for details. 289 | # The output of markdown processing is further processed by doxygen, so you can 290 | # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in 291 | # case of backward compatibilities issues. 292 | # The default value is: YES. 293 | 294 | MARKDOWN_SUPPORT = YES 295 | 296 | # When enabled doxygen tries to link words that correspond to documented 297 | # classes, or namespaces to their corresponding documentation. Such a link can 298 | # be prevented in individual cases by by putting a % sign in front of the word 299 | # or globally by setting AUTOLINK_SUPPORT to NO. 300 | # The default value is: YES. 301 | 302 | AUTOLINK_SUPPORT = YES 303 | 304 | # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 305 | # to include (a tag file for) the STL sources as input, then you should set this 306 | # tag to YES in order to let doxygen match functions declarations and 307 | # definitions whose arguments contain STL classes (e.g. func(std::string); 308 | # versus func(std::string) {}). This also make the inheritance and collaboration 309 | # diagrams that involve STL classes more complete and accurate. 310 | # The default value is: NO. 311 | 312 | BUILTIN_STL_SUPPORT = NO 313 | 314 | # If you use Microsoft's C++/CLI language, you should set this option to YES to 315 | # enable parsing support. 316 | # The default value is: NO. 317 | 318 | CPP_CLI_SUPPORT = NO 319 | 320 | # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: 321 | # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen 322 | # will parse them like normal C++ but will assume all classes use public instead 323 | # of private inheritance when no explicit protection keyword is present. 324 | # The default value is: NO. 325 | 326 | SIP_SUPPORT = NO 327 | 328 | # For Microsoft's IDL there are propget and propput attributes to indicate 329 | # getter and setter methods for a property. Setting this option to YES will make 330 | # doxygen to replace the get and set methods by a property in the documentation. 331 | # This will only work if the methods are indeed getting or setting a simple 332 | # type. If this is not the case, or you want to show the methods anyway, you 333 | # should set this option to NO. 334 | # The default value is: YES. 335 | 336 | IDL_PROPERTY_SUPPORT = YES 337 | 338 | # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 339 | # tag is set to YES, then doxygen will reuse the documentation of the first 340 | # member in the group (if any) for the other members of the group. By default 341 | # all members of a group must be documented explicitly. 342 | # The default value is: NO. 343 | 344 | DISTRIBUTE_GROUP_DOC = NO 345 | 346 | # Set the SUBGROUPING tag to YES to allow class member groups of the same type 347 | # (for instance a group of public functions) to be put as a subgroup of that 348 | # type (e.g. under the Public Functions section). Set it to NO to prevent 349 | # subgrouping. Alternatively, this can be done per class using the 350 | # \nosubgrouping command. 351 | # The default value is: YES. 352 | 353 | SUBGROUPING = YES 354 | 355 | # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions 356 | # are shown inside the group in which they are included (e.g. using \ingroup) 357 | # instead of on a separate page (for HTML and Man pages) or section (for LaTeX 358 | # and RTF). 359 | # 360 | # Note that this feature does not work in combination with 361 | # SEPARATE_MEMBER_PAGES. 362 | # The default value is: NO. 363 | 364 | INLINE_GROUPED_CLASSES = NO 365 | 366 | # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions 367 | # with only public data fields or simple typedef fields will be shown inline in 368 | # the documentation of the scope in which they are defined (i.e. file, 369 | # namespace, or group documentation), provided this scope is documented. If set 370 | # to NO, structs, classes, and unions are shown on a separate page (for HTML and 371 | # Man pages) or section (for LaTeX and RTF). 372 | # The default value is: NO. 373 | 374 | INLINE_SIMPLE_STRUCTS = NO 375 | 376 | # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or 377 | # enum is documented as struct, union, or enum with the name of the typedef. So 378 | # typedef struct TypeS {} TypeT, will appear in the documentation as a struct 379 | # with name TypeT. When disabled the typedef will appear as a member of a file, 380 | # namespace, or class. And the struct will be named TypeS. This can typically be 381 | # useful for C code in case the coding convention dictates that all compound 382 | # types are typedef'ed and only the typedef is referenced, never the tag name. 383 | # The default value is: NO. 384 | 385 | TYPEDEF_HIDES_STRUCT = NO 386 | 387 | # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This 388 | # cache is used to resolve symbols given their name and scope. Since this can be 389 | # an expensive process and often the same symbol appears multiple times in the 390 | # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small 391 | # doxygen will become slower. If the cache is too large, memory is wasted. The 392 | # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range 393 | # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 394 | # symbols. At the end of a run doxygen will report the cache usage and suggest 395 | # the optimal cache size from a speed point of view. 396 | # Minimum value: 0, maximum value: 9, default value: 0. 397 | 398 | LOOKUP_CACHE_SIZE = 0 399 | 400 | #--------------------------------------------------------------------------- 401 | # Build related configuration options 402 | #--------------------------------------------------------------------------- 403 | 404 | # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 405 | # documentation are documented, even if no documentation was available. Private 406 | # class members and static file members will be hidden unless the 407 | # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. 408 | # Note: This will also disable the warnings about undocumented members that are 409 | # normally produced when WARNINGS is set to YES. 410 | # The default value is: NO. 411 | 412 | EXTRACT_ALL = NO 413 | 414 | # If the EXTRACT_PRIVATE tag is set to YES all private members of a class will 415 | # be included in the documentation. 416 | # The default value is: NO. 417 | 418 | EXTRACT_PRIVATE = NO 419 | 420 | # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal 421 | # scope will be included in the documentation. 422 | # The default value is: NO. 423 | 424 | EXTRACT_PACKAGE = NO 425 | 426 | # If the EXTRACT_STATIC tag is set to YES all static members of a file will be 427 | # included in the documentation. 428 | # The default value is: NO. 429 | 430 | EXTRACT_STATIC = NO 431 | 432 | # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined 433 | # locally in source files will be included in the documentation. If set to NO 434 | # only classes defined in header files are included. Does not have any effect 435 | # for Java sources. 436 | # The default value is: YES. 437 | 438 | EXTRACT_LOCAL_CLASSES = YES 439 | 440 | # This flag is only useful for Objective-C code. When set to YES local methods, 441 | # which are defined in the implementation section but not in the interface are 442 | # included in the documentation. If set to NO only methods in the interface are 443 | # included. 444 | # The default value is: NO. 445 | 446 | EXTRACT_LOCAL_METHODS = NO 447 | 448 | # If this flag is set to YES, the members of anonymous namespaces will be 449 | # extracted and appear in the documentation as a namespace called 450 | # 'anonymous_namespace{file}', where file will be replaced with the base name of 451 | # the file that contains the anonymous namespace. By default anonymous namespace 452 | # are hidden. 453 | # The default value is: NO. 454 | 455 | EXTRACT_ANON_NSPACES = NO 456 | 457 | # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all 458 | # undocumented members inside documented classes or files. If set to NO these 459 | # members will be included in the various overviews, but no documentation 460 | # section is generated. This option has no effect if EXTRACT_ALL is enabled. 461 | # The default value is: NO. 462 | 463 | HIDE_UNDOC_MEMBERS = NO 464 | 465 | # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all 466 | # undocumented classes that are normally visible in the class hierarchy. If set 467 | # to NO these classes will be included in the various overviews. This option has 468 | # no effect if EXTRACT_ALL is enabled. 469 | # The default value is: NO. 470 | 471 | HIDE_UNDOC_CLASSES = NO 472 | 473 | # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend 474 | # (class|struct|union) declarations. If set to NO these declarations will be 475 | # included in the documentation. 476 | # The default value is: NO. 477 | 478 | HIDE_FRIEND_COMPOUNDS = NO 479 | 480 | # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any 481 | # documentation blocks found inside the body of a function. If set to NO these 482 | # blocks will be appended to the function's detailed documentation block. 483 | # The default value is: NO. 484 | 485 | HIDE_IN_BODY_DOCS = NO 486 | 487 | # The INTERNAL_DOCS tag determines if documentation that is typed after a 488 | # \internal command is included. If the tag is set to NO then the documentation 489 | # will be excluded. Set it to YES to include the internal documentation. 490 | # The default value is: NO. 491 | 492 | INTERNAL_DOCS = NO 493 | 494 | # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file 495 | # names in lower-case letters. If set to YES upper-case letters are also 496 | # allowed. This is useful if you have classes or files whose names only differ 497 | # in case and if your file system supports case sensitive file names. Windows 498 | # and Mac users are advised to set this option to NO. 499 | # The default value is: system dependent. 500 | 501 | CASE_SENSE_NAMES = YES 502 | 503 | # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with 504 | # their full class and namespace scopes in the documentation. If set to YES the 505 | # scope will be hidden. 506 | # The default value is: NO. 507 | 508 | HIDE_SCOPE_NAMES = NO 509 | 510 | # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of 511 | # the files that are included by a file in the documentation of that file. 512 | # The default value is: YES. 513 | 514 | SHOW_INCLUDE_FILES = YES 515 | 516 | # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each 517 | # grouped member an include statement to the documentation, telling the reader 518 | # which file to include in order to use the member. 519 | # The default value is: NO. 520 | 521 | SHOW_GROUPED_MEMB_INC = NO 522 | 523 | # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include 524 | # files with double quotes in the documentation rather than with sharp brackets. 525 | # The default value is: NO. 526 | 527 | FORCE_LOCAL_INCLUDES = NO 528 | 529 | # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the 530 | # documentation for inline members. 531 | # The default value is: YES. 532 | 533 | INLINE_INFO = YES 534 | 535 | # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the 536 | # (detailed) documentation of file and class members alphabetically by member 537 | # name. If set to NO the members will appear in declaration order. 538 | # The default value is: YES. 539 | 540 | SORT_MEMBER_DOCS = YES 541 | 542 | # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief 543 | # descriptions of file, namespace and class members alphabetically by member 544 | # name. If set to NO the members will appear in declaration order. Note that 545 | # this will also influence the order of the classes in the class list. 546 | # The default value is: NO. 547 | 548 | SORT_BRIEF_DOCS = NO 549 | 550 | # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the 551 | # (brief and detailed) documentation of class members so that constructors and 552 | # destructors are listed first. If set to NO the constructors will appear in the 553 | # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. 554 | # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief 555 | # member documentation. 556 | # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting 557 | # detailed member documentation. 558 | # The default value is: NO. 559 | 560 | SORT_MEMBERS_CTORS_1ST = NO 561 | 562 | # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy 563 | # of group names into alphabetical order. If set to NO the group names will 564 | # appear in their defined order. 565 | # The default value is: NO. 566 | 567 | SORT_GROUP_NAMES = NO 568 | 569 | # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by 570 | # fully-qualified names, including namespaces. If set to NO, the class list will 571 | # be sorted only by class name, not including the namespace part. 572 | # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 573 | # Note: This option applies only to the class list, not to the alphabetical 574 | # list. 575 | # The default value is: NO. 576 | 577 | SORT_BY_SCOPE_NAME = NO 578 | 579 | # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper 580 | # type resolution of all parameters of a function it will reject a match between 581 | # the prototype and the implementation of a member function even if there is 582 | # only one candidate or it is obvious which candidate to choose by doing a 583 | # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still 584 | # accept a match between prototype and implementation in such cases. 585 | # The default value is: NO. 586 | 587 | STRICT_PROTO_MATCHING = NO 588 | 589 | # The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the 590 | # todo list. This list is created by putting \todo commands in the 591 | # documentation. 592 | # The default value is: YES. 593 | 594 | GENERATE_TODOLIST = YES 595 | 596 | # The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the 597 | # test list. This list is created by putting \test commands in the 598 | # documentation. 599 | # The default value is: YES. 600 | 601 | GENERATE_TESTLIST = YES 602 | 603 | # The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug 604 | # list. This list is created by putting \bug commands in the documentation. 605 | # The default value is: YES. 606 | 607 | GENERATE_BUGLIST = YES 608 | 609 | # The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) 610 | # the deprecated list. This list is created by putting \deprecated commands in 611 | # the documentation. 612 | # The default value is: YES. 613 | 614 | GENERATE_DEPRECATEDLIST= YES 615 | 616 | # The ENABLED_SECTIONS tag can be used to enable conditional documentation 617 | # sections, marked by \if ... \endif and \cond 618 | # ... \endcond blocks. 619 | 620 | ENABLED_SECTIONS = 621 | 622 | # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the 623 | # initial value of a variable or macro / define can have for it to appear in the 624 | # documentation. If the initializer consists of more lines than specified here 625 | # it will be hidden. Use a value of 0 to hide initializers completely. The 626 | # appearance of the value of individual variables and macros / defines can be 627 | # controlled using \showinitializer or \hideinitializer command in the 628 | # documentation regardless of this setting. 629 | # Minimum value: 0, maximum value: 10000, default value: 30. 630 | 631 | MAX_INITIALIZER_LINES = 30 632 | 633 | # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at 634 | # the bottom of the documentation of classes and structs. If set to YES the list 635 | # will mention the files that were used to generate the documentation. 636 | # The default value is: YES. 637 | 638 | SHOW_USED_FILES = YES 639 | 640 | # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This 641 | # will remove the Files entry from the Quick Index and from the Folder Tree View 642 | # (if specified). 643 | # The default value is: YES. 644 | 645 | SHOW_FILES = YES 646 | 647 | # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces 648 | # page. This will remove the Namespaces entry from the Quick Index and from the 649 | # Folder Tree View (if specified). 650 | # The default value is: YES. 651 | 652 | SHOW_NAMESPACES = YES 653 | 654 | # The FILE_VERSION_FILTER tag can be used to specify a program or script that 655 | # doxygen should invoke to get the current version for each file (typically from 656 | # the version control system). Doxygen will invoke the program by executing (via 657 | # popen()) the command command input-file, where command is the value of the 658 | # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided 659 | # by doxygen. Whatever the program writes to standard output is used as the file 660 | # version. For an example see the documentation. 661 | 662 | FILE_VERSION_FILTER = 663 | 664 | # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed 665 | # by doxygen. The layout file controls the global structure of the generated 666 | # output files in an output format independent way. To create the layout file 667 | # that represents doxygen's defaults, run doxygen with the -l option. You can 668 | # optionally specify a file name after the option, if omitted DoxygenLayout.xml 669 | # will be used as the name of the layout file. 670 | # 671 | # Note that if you run doxygen from a directory containing a file called 672 | # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE 673 | # tag is left empty. 674 | 675 | LAYOUT_FILE = 676 | 677 | # The CITE_BIB_FILES tag can be used to specify one or more bib files containing 678 | # the reference definitions. This must be a list of .bib files. The .bib 679 | # extension is automatically appended if omitted. This requires the bibtex tool 680 | # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. 681 | # For LaTeX the style of the bibliography can be controlled using 682 | # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the 683 | # search path. See also \cite for info how to create references. 684 | 685 | CITE_BIB_FILES = 686 | 687 | #--------------------------------------------------------------------------- 688 | # Configuration options related to warning and progress messages 689 | #--------------------------------------------------------------------------- 690 | 691 | # The QUIET tag can be used to turn on/off the messages that are generated to 692 | # standard output by doxygen. If QUIET is set to YES this implies that the 693 | # messages are off. 694 | # The default value is: NO. 695 | 696 | QUIET = NO 697 | 698 | # The WARNINGS tag can be used to turn on/off the warning messages that are 699 | # generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES 700 | # this implies that the warnings are on. 701 | # 702 | # Tip: Turn warnings on while writing the documentation. 703 | # The default value is: YES. 704 | 705 | WARNINGS = YES 706 | 707 | # If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate 708 | # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag 709 | # will automatically be disabled. 710 | # The default value is: YES. 711 | 712 | WARN_IF_UNDOCUMENTED = YES 713 | 714 | # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for 715 | # potential errors in the documentation, such as not documenting some parameters 716 | # in a documented function, or documenting parameters that don't exist or using 717 | # markup commands wrongly. 718 | # The default value is: YES. 719 | 720 | WARN_IF_DOC_ERROR = YES 721 | 722 | # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that 723 | # are documented, but have no documentation for their parameters or return 724 | # value. If set to NO doxygen will only warn about wrong or incomplete parameter 725 | # documentation, but not about the absence of documentation. 726 | # The default value is: NO. 727 | 728 | WARN_NO_PARAMDOC = NO 729 | 730 | # The WARN_FORMAT tag determines the format of the warning messages that doxygen 731 | # can produce. The string should contain the $file, $line, and $text tags, which 732 | # will be replaced by the file and line number from which the warning originated 733 | # and the warning text. Optionally the format may contain $version, which will 734 | # be replaced by the version of the file (if it could be obtained via 735 | # FILE_VERSION_FILTER) 736 | # The default value is: $file:$line: $text. 737 | 738 | WARN_FORMAT = "$file:$line: $text" 739 | 740 | # The WARN_LOGFILE tag can be used to specify a file to which warning and error 741 | # messages should be written. If left blank the output is written to standard 742 | # error (stderr). 743 | 744 | WARN_LOGFILE = 745 | 746 | #--------------------------------------------------------------------------- 747 | # Configuration options related to the input files 748 | #--------------------------------------------------------------------------- 749 | 750 | # The INPUT tag is used to specify the files and/or directories that contain 751 | # documented source files. You may enter file names like myfile.cpp or 752 | # directories like /usr/src/myproject. Separate the files or directories with 753 | # spaces. 754 | # Note: If this tag is empty the current directory is searched. 755 | 756 | INPUT = @CMAKE_SOURCE_DIR@/doc/ \ 757 | @CMAKE_SOURCE_DIR@/include/ 758 | 759 | # This tag can be used to specify the character encoding of the source files 760 | # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses 761 | # libiconv (or the iconv built into libc) for the transcoding. See the libiconv 762 | # documentation (see: http://www.gnu.org/software/libiconv) for the list of 763 | # possible encodings. 764 | # The default value is: UTF-8. 765 | 766 | INPUT_ENCODING = UTF-8 767 | 768 | # If the value of the INPUT tag contains directories, you can use the 769 | # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and 770 | # *.h) to filter out the source-files in the directories. If left blank the 771 | # following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, 772 | # *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, 773 | # *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, 774 | # *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, 775 | # *.qsf, *.as and *.js. 776 | 777 | FILE_PATTERNS = 778 | 779 | # The RECURSIVE tag can be used to specify whether or not subdirectories should 780 | # be searched for input files as well. 781 | # The default value is: NO. 782 | 783 | RECURSIVE = YES 784 | 785 | # The EXCLUDE tag can be used to specify files and/or directories that should be 786 | # excluded from the INPUT source files. This way you can easily exclude a 787 | # subdirectory from a directory tree whose root is specified with the INPUT tag. 788 | # 789 | # Note that relative paths are relative to the directory from which doxygen is 790 | # run. 791 | 792 | EXCLUDE = 793 | 794 | # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or 795 | # directories that are symbolic links (a Unix file system feature) are excluded 796 | # from the input. 797 | # The default value is: NO. 798 | 799 | EXCLUDE_SYMLINKS = NO 800 | 801 | # If the value of the INPUT tag contains directories, you can use the 802 | # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 803 | # certain files from those directories. 804 | # 805 | # Note that the wildcards are matched against the file with absolute path, so to 806 | # exclude all test directories for example use the pattern */test/* 807 | 808 | EXCLUDE_PATTERNS = 809 | 810 | # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 811 | # (namespaces, classes, functions, etc.) that should be excluded from the 812 | # output. The symbol name can be a fully qualified name, a word, or if the 813 | # wildcard * is used, a substring. Examples: ANamespace, AClass, 814 | # AClass::ANamespace, ANamespace::*Test 815 | # 816 | # Note that the wildcards are matched against the file with absolute path, so to 817 | # exclude all test directories use the pattern */test/* 818 | 819 | EXCLUDE_SYMBOLS = 820 | 821 | # The EXAMPLE_PATH tag can be used to specify one or more files or directories 822 | # that contain example code fragments that are included (see the \include 823 | # command). 824 | 825 | EXAMPLE_PATH = 826 | 827 | # If the value of the EXAMPLE_PATH tag contains directories, you can use the 828 | # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and 829 | # *.h) to filter out the source-files in the directories. If left blank all 830 | # files are included. 831 | 832 | EXAMPLE_PATTERNS = 833 | 834 | # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 835 | # searched for input files to be used with the \include or \dontinclude commands 836 | # irrespective of the value of the RECURSIVE tag. 837 | # The default value is: NO. 838 | 839 | EXAMPLE_RECURSIVE = NO 840 | 841 | # The IMAGE_PATH tag can be used to specify one or more files or directories 842 | # that contain images that are to be included in the documentation (see the 843 | # \image command). 844 | 845 | IMAGE_PATH = 846 | 847 | # The INPUT_FILTER tag can be used to specify a program that doxygen should 848 | # invoke to filter for each input file. Doxygen will invoke the filter program 849 | # by executing (via popen()) the command: 850 | # 851 | # 852 | # 853 | # where is the value of the INPUT_FILTER tag, and is the 854 | # name of an input file. Doxygen will then use the output that the filter 855 | # program writes to standard output. If FILTER_PATTERNS is specified, this tag 856 | # will be ignored. 857 | # 858 | # Note that the filter must not add or remove lines; it is applied before the 859 | # code is scanned, but not when the output code is generated. If lines are added 860 | # or removed, the anchors will not be placed correctly. 861 | 862 | INPUT_FILTER = 863 | 864 | # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 865 | # basis. Doxygen will compare the file name with each pattern and apply the 866 | # filter if there is a match. The filters are a list of the form: pattern=filter 867 | # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how 868 | # filters are used. If the FILTER_PATTERNS tag is empty or if none of the 869 | # patterns match the file name, INPUT_FILTER is applied. 870 | 871 | FILTER_PATTERNS = 872 | 873 | # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 874 | # INPUT_FILTER ) will also be used to filter the input files that are used for 875 | # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). 876 | # The default value is: NO. 877 | 878 | FILTER_SOURCE_FILES = NO 879 | 880 | # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file 881 | # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and 882 | # it is also possible to disable source filtering for a specific pattern using 883 | # *.ext= (so without naming a filter). 884 | # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. 885 | 886 | FILTER_SOURCE_PATTERNS = 887 | 888 | # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that 889 | # is part of the input, its contents will be placed on the main page 890 | # (index.html). This can be useful if you have a project on for instance GitHub 891 | # and want to reuse the introduction page also for the doxygen output. 892 | 893 | USE_MDFILE_AS_MAINPAGE = @CMAKE_SOURCE_DIR@/doc/main_page.md 894 | 895 | #--------------------------------------------------------------------------- 896 | # Configuration options related to source browsing 897 | #--------------------------------------------------------------------------- 898 | 899 | # If the SOURCE_BROWSER tag is set to YES then a list of source files will be 900 | # generated. Documented entities will be cross-referenced with these sources. 901 | # 902 | # Note: To get rid of all source code in the generated output, make sure that 903 | # also VERBATIM_HEADERS is set to NO. 904 | # The default value is: NO. 905 | 906 | SOURCE_BROWSER = NO 907 | 908 | # Setting the INLINE_SOURCES tag to YES will include the body of functions, 909 | # classes and enums directly into the documentation. 910 | # The default value is: NO. 911 | 912 | INLINE_SOURCES = NO 913 | 914 | # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any 915 | # special comment blocks from generated source code fragments. Normal C, C++ and 916 | # Fortran comments will always remain visible. 917 | # The default value is: YES. 918 | 919 | STRIP_CODE_COMMENTS = YES 920 | 921 | # If the REFERENCED_BY_RELATION tag is set to YES then for each documented 922 | # function all documented functions referencing it will be listed. 923 | # The default value is: NO. 924 | 925 | REFERENCED_BY_RELATION = NO 926 | 927 | # If the REFERENCES_RELATION tag is set to YES then for each documented function 928 | # all documented entities called/used by that function will be listed. 929 | # The default value is: NO. 930 | 931 | REFERENCES_RELATION = NO 932 | 933 | # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set 934 | # to YES, then the hyperlinks from functions in REFERENCES_RELATION and 935 | # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will 936 | # link to the documentation. 937 | # The default value is: YES. 938 | 939 | REFERENCES_LINK_SOURCE = YES 940 | 941 | # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the 942 | # source code will show a tooltip with additional information such as prototype, 943 | # brief description and links to the definition and documentation. Since this 944 | # will make the HTML file larger and loading of large files a bit slower, you 945 | # can opt to disable this feature. 946 | # The default value is: YES. 947 | # This tag requires that the tag SOURCE_BROWSER is set to YES. 948 | 949 | SOURCE_TOOLTIPS = YES 950 | 951 | # If the USE_HTAGS tag is set to YES then the references to source code will 952 | # point to the HTML generated by the htags(1) tool instead of doxygen built-in 953 | # source browser. The htags tool is part of GNU's global source tagging system 954 | # (see http://www.gnu.org/software/global/global.html). You will need version 955 | # 4.8.6 or higher. 956 | # 957 | # To use it do the following: 958 | # - Install the latest version of global 959 | # - Enable SOURCE_BROWSER and USE_HTAGS in the config file 960 | # - Make sure the INPUT points to the root of the source tree 961 | # - Run doxygen as normal 962 | # 963 | # Doxygen will invoke htags (and that will in turn invoke gtags), so these 964 | # tools must be available from the command line (i.e. in the search path). 965 | # 966 | # The result: instead of the source browser generated by doxygen, the links to 967 | # source code will now point to the output of htags. 968 | # The default value is: NO. 969 | # This tag requires that the tag SOURCE_BROWSER is set to YES. 970 | 971 | USE_HTAGS = NO 972 | 973 | # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a 974 | # verbatim copy of the header file for each class for which an include is 975 | # specified. Set to NO to disable this. 976 | # See also: Section \class. 977 | # The default value is: YES. 978 | 979 | VERBATIM_HEADERS = YES 980 | 981 | #--------------------------------------------------------------------------- 982 | # Configuration options related to the alphabetical class index 983 | #--------------------------------------------------------------------------- 984 | 985 | # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all 986 | # compounds will be generated. Enable this if the project contains a lot of 987 | # classes, structs, unions or interfaces. 988 | # The default value is: YES. 989 | 990 | ALPHABETICAL_INDEX = YES 991 | 992 | # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in 993 | # which the alphabetical index list will be split. 994 | # Minimum value: 1, maximum value: 20, default value: 5. 995 | # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. 996 | 997 | COLS_IN_ALPHA_INDEX = 5 998 | 999 | # In case all classes in a project start with a common prefix, all classes will 1000 | # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag 1001 | # can be used to specify a prefix (or a list of prefixes) that should be ignored 1002 | # while generating the index headers. 1003 | # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. 1004 | 1005 | IGNORE_PREFIX = 1006 | 1007 | #--------------------------------------------------------------------------- 1008 | # Configuration options related to the HTML output 1009 | #--------------------------------------------------------------------------- 1010 | 1011 | # If the GENERATE_HTML tag is set to YES doxygen will generate HTML output 1012 | # The default value is: YES. 1013 | 1014 | GENERATE_HTML = YES 1015 | 1016 | # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a 1017 | # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of 1018 | # it. 1019 | # The default directory is: html. 1020 | # This tag requires that the tag GENERATE_HTML is set to YES. 1021 | 1022 | HTML_OUTPUT = html 1023 | 1024 | # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each 1025 | # generated HTML page (for example: .htm, .php, .asp). 1026 | # The default value is: .html. 1027 | # This tag requires that the tag GENERATE_HTML is set to YES. 1028 | 1029 | HTML_FILE_EXTENSION = .html 1030 | 1031 | # The HTML_HEADER tag can be used to specify a user-defined HTML header file for 1032 | # each generated HTML page. If the tag is left blank doxygen will generate a 1033 | # standard header. 1034 | # 1035 | # To get valid HTML the header file that includes any scripts and style sheets 1036 | # that doxygen needs, which is dependent on the configuration options used (e.g. 1037 | # the setting GENERATE_TREEVIEW). It is highly recommended to start with a 1038 | # default header using 1039 | # doxygen -w html new_header.html new_footer.html new_stylesheet.css 1040 | # YourConfigFile 1041 | # and then modify the file new_header.html. See also section "Doxygen usage" 1042 | # for information on how to generate the default header that doxygen normally 1043 | # uses. 1044 | # Note: The header is subject to change so you typically have to regenerate the 1045 | # default header when upgrading to a newer version of doxygen. For a description 1046 | # of the possible markers and block names see the documentation. 1047 | # This tag requires that the tag GENERATE_HTML is set to YES. 1048 | 1049 | HTML_HEADER = 1050 | 1051 | # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each 1052 | # generated HTML page. If the tag is left blank doxygen will generate a standard 1053 | # footer. See HTML_HEADER for more information on how to generate a default 1054 | # footer and what special commands can be used inside the footer. See also 1055 | # section "Doxygen usage" for information on how to generate the default footer 1056 | # that doxygen normally uses. 1057 | # This tag requires that the tag GENERATE_HTML is set to YES. 1058 | 1059 | HTML_FOOTER = 1060 | 1061 | # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style 1062 | # sheet that is used by each HTML page. It can be used to fine-tune the look of 1063 | # the HTML output. If left blank doxygen will generate a default style sheet. 1064 | # See also section "Doxygen usage" for information on how to generate the style 1065 | # sheet that doxygen normally uses. 1066 | # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as 1067 | # it is more robust and this tag (HTML_STYLESHEET) will in the future become 1068 | # obsolete. 1069 | # This tag requires that the tag GENERATE_HTML is set to YES. 1070 | 1071 | HTML_STYLESHEET = 1072 | 1073 | # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined 1074 | # cascading style sheets that are included after the standard style sheets 1075 | # created by doxygen. Using this option one can overrule certain style aspects. 1076 | # This is preferred over using HTML_STYLESHEET since it does not replace the 1077 | # standard style sheet and is therefor more robust against future updates. 1078 | # Doxygen will copy the style sheet files to the output directory. 1079 | # Note: The order of the extra stylesheet files is of importance (e.g. the last 1080 | # stylesheet in the list overrules the setting of the previous ones in the 1081 | # list). For an example see the documentation. 1082 | # This tag requires that the tag GENERATE_HTML is set to YES. 1083 | 1084 | HTML_EXTRA_STYLESHEET = 1085 | 1086 | # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or 1087 | # other source files which should be copied to the HTML output directory. Note 1088 | # that these files will be copied to the base HTML output directory. Use the 1089 | # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these 1090 | # files. In the HTML_STYLESHEET file, use the file name only. Also note that the 1091 | # files will be copied as-is; there are no commands or markers available. 1092 | # This tag requires that the tag GENERATE_HTML is set to YES. 1093 | 1094 | HTML_EXTRA_FILES = 1095 | 1096 | # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen 1097 | # will adjust the colors in the stylesheet and background images according to 1098 | # this color. Hue is specified as an angle on a colorwheel, see 1099 | # http://en.wikipedia.org/wiki/Hue for more information. For instance the value 1100 | # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 1101 | # purple, and 360 is red again. 1102 | # Minimum value: 0, maximum value: 359, default value: 220. 1103 | # This tag requires that the tag GENERATE_HTML is set to YES. 1104 | 1105 | HTML_COLORSTYLE_HUE = 220 1106 | 1107 | # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors 1108 | # in the HTML output. For a value of 0 the output will use grayscales only. A 1109 | # value of 255 will produce the most vivid colors. 1110 | # Minimum value: 0, maximum value: 255, default value: 100. 1111 | # This tag requires that the tag GENERATE_HTML is set to YES. 1112 | 1113 | HTML_COLORSTYLE_SAT = 100 1114 | 1115 | # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the 1116 | # luminance component of the colors in the HTML output. Values below 100 1117 | # gradually make the output lighter, whereas values above 100 make the output 1118 | # darker. The value divided by 100 is the actual gamma applied, so 80 represents 1119 | # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not 1120 | # change the gamma. 1121 | # Minimum value: 40, maximum value: 240, default value: 80. 1122 | # This tag requires that the tag GENERATE_HTML is set to YES. 1123 | 1124 | HTML_COLORSTYLE_GAMMA = 80 1125 | 1126 | # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML 1127 | # page will contain the date and time when the page was generated. Setting this 1128 | # to NO can help when comparing the output of multiple runs. 1129 | # The default value is: YES. 1130 | # This tag requires that the tag GENERATE_HTML is set to YES. 1131 | 1132 | HTML_TIMESTAMP = YES 1133 | 1134 | # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 1135 | # documentation will contain sections that can be hidden and shown after the 1136 | # page has loaded. 1137 | # The default value is: NO. 1138 | # This tag requires that the tag GENERATE_HTML is set to YES. 1139 | 1140 | HTML_DYNAMIC_SECTIONS = NO 1141 | 1142 | # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries 1143 | # shown in the various tree structured indices initially; the user can expand 1144 | # and collapse entries dynamically later on. Doxygen will expand the tree to 1145 | # such a level that at most the specified number of entries are visible (unless 1146 | # a fully collapsed tree already exceeds this amount). So setting the number of 1147 | # entries 1 will produce a full collapsed tree by default. 0 is a special value 1148 | # representing an infinite number of entries and will result in a full expanded 1149 | # tree by default. 1150 | # Minimum value: 0, maximum value: 9999, default value: 100. 1151 | # This tag requires that the tag GENERATE_HTML is set to YES. 1152 | 1153 | HTML_INDEX_NUM_ENTRIES = 100 1154 | 1155 | # If the GENERATE_DOCSET tag is set to YES, additional index files will be 1156 | # generated that can be used as input for Apple's Xcode 3 integrated development 1157 | # environment (see: http://developer.apple.com/tools/xcode/), introduced with 1158 | # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a 1159 | # Makefile in the HTML output directory. Running make will produce the docset in 1160 | # that directory and running make install will install the docset in 1161 | # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at 1162 | # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html 1163 | # for more information. 1164 | # The default value is: NO. 1165 | # This tag requires that the tag GENERATE_HTML is set to YES. 1166 | 1167 | GENERATE_DOCSET = NO 1168 | 1169 | # This tag determines the name of the docset feed. A documentation feed provides 1170 | # an umbrella under which multiple documentation sets from a single provider 1171 | # (such as a company or product suite) can be grouped. 1172 | # The default value is: Doxygen generated docs. 1173 | # This tag requires that the tag GENERATE_DOCSET is set to YES. 1174 | 1175 | DOCSET_FEEDNAME = "Doxygen generated docs" 1176 | 1177 | # This tag specifies a string that should uniquely identify the documentation 1178 | # set bundle. This should be a reverse domain-name style string, e.g. 1179 | # com.mycompany.MyDocSet. Doxygen will append .docset to the name. 1180 | # The default value is: org.doxygen.Project. 1181 | # This tag requires that the tag GENERATE_DOCSET is set to YES. 1182 | 1183 | DOCSET_BUNDLE_ID = org.doxygen.Project 1184 | 1185 | # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify 1186 | # the documentation publisher. This should be a reverse domain-name style 1187 | # string, e.g. com.mycompany.MyDocSet.documentation. 1188 | # The default value is: org.doxygen.Publisher. 1189 | # This tag requires that the tag GENERATE_DOCSET is set to YES. 1190 | 1191 | DOCSET_PUBLISHER_ID = org.doxygen.Publisher 1192 | 1193 | # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. 1194 | # The default value is: Publisher. 1195 | # This tag requires that the tag GENERATE_DOCSET is set to YES. 1196 | 1197 | DOCSET_PUBLISHER_NAME = Publisher 1198 | 1199 | # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three 1200 | # additional HTML index files: index.hhp, index.hhc, and index.hhk. The 1201 | # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop 1202 | # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on 1203 | # Windows. 1204 | # 1205 | # The HTML Help Workshop contains a compiler that can convert all HTML output 1206 | # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML 1207 | # files are now used as the Windows 98 help format, and will replace the old 1208 | # Windows help format (.hlp) on all Windows platforms in the future. Compressed 1209 | # HTML files also contain an index, a table of contents, and you can search for 1210 | # words in the documentation. The HTML workshop also contains a viewer for 1211 | # compressed HTML files. 1212 | # The default value is: NO. 1213 | # This tag requires that the tag GENERATE_HTML is set to YES. 1214 | 1215 | GENERATE_HTMLHELP = NO 1216 | 1217 | # The CHM_FILE tag can be used to specify the file name of the resulting .chm 1218 | # file. You can add a path in front of the file if the result should not be 1219 | # written to the html output directory. 1220 | # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1221 | 1222 | CHM_FILE = 1223 | 1224 | # The HHC_LOCATION tag can be used to specify the location (absolute path 1225 | # including file name) of the HTML help compiler ( hhc.exe). If non-empty 1226 | # doxygen will try to run the HTML help compiler on the generated index.hhp. 1227 | # The file has to be specified with full path. 1228 | # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1229 | 1230 | HHC_LOCATION = 1231 | 1232 | # The GENERATE_CHI flag controls if a separate .chi index file is generated ( 1233 | # YES) or that it should be included in the master .chm file ( NO). 1234 | # The default value is: NO. 1235 | # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1236 | 1237 | GENERATE_CHI = NO 1238 | 1239 | # The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) 1240 | # and project file content. 1241 | # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1242 | 1243 | CHM_INDEX_ENCODING = 1244 | 1245 | # The BINARY_TOC flag controls whether a binary table of contents is generated ( 1246 | # YES) or a normal table of contents ( NO) in the .chm file. Furthermore it 1247 | # enables the Previous and Next buttons. 1248 | # The default value is: NO. 1249 | # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1250 | 1251 | BINARY_TOC = NO 1252 | 1253 | # The TOC_EXPAND flag can be set to YES to add extra items for group members to 1254 | # the table of contents of the HTML help documentation and to the tree view. 1255 | # The default value is: NO. 1256 | # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1257 | 1258 | TOC_EXPAND = NO 1259 | 1260 | # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and 1261 | # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that 1262 | # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help 1263 | # (.qch) of the generated HTML documentation. 1264 | # The default value is: NO. 1265 | # This tag requires that the tag GENERATE_HTML is set to YES. 1266 | 1267 | GENERATE_QHP = NO 1268 | 1269 | # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify 1270 | # the file name of the resulting .qch file. The path specified is relative to 1271 | # the HTML output folder. 1272 | # This tag requires that the tag GENERATE_QHP is set to YES. 1273 | 1274 | QCH_FILE = 1275 | 1276 | # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help 1277 | # Project output. For more information please see Qt Help Project / Namespace 1278 | # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). 1279 | # The default value is: org.doxygen.Project. 1280 | # This tag requires that the tag GENERATE_QHP is set to YES. 1281 | 1282 | QHP_NAMESPACE = org.doxygen.Project 1283 | 1284 | # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt 1285 | # Help Project output. For more information please see Qt Help Project / Virtual 1286 | # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- 1287 | # folders). 1288 | # The default value is: doc. 1289 | # This tag requires that the tag GENERATE_QHP is set to YES. 1290 | 1291 | QHP_VIRTUAL_FOLDER = doc 1292 | 1293 | # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom 1294 | # filter to add. For more information please see Qt Help Project / Custom 1295 | # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- 1296 | # filters). 1297 | # This tag requires that the tag GENERATE_QHP is set to YES. 1298 | 1299 | QHP_CUST_FILTER_NAME = 1300 | 1301 | # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the 1302 | # custom filter to add. For more information please see Qt Help Project / Custom 1303 | # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- 1304 | # filters). 1305 | # This tag requires that the tag GENERATE_QHP is set to YES. 1306 | 1307 | QHP_CUST_FILTER_ATTRS = 1308 | 1309 | # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this 1310 | # project's filter section matches. Qt Help Project / Filter Attributes (see: 1311 | # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). 1312 | # This tag requires that the tag GENERATE_QHP is set to YES. 1313 | 1314 | QHP_SECT_FILTER_ATTRS = 1315 | 1316 | # The QHG_LOCATION tag can be used to specify the location of Qt's 1317 | # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the 1318 | # generated .qhp file. 1319 | # This tag requires that the tag GENERATE_QHP is set to YES. 1320 | 1321 | QHG_LOCATION = 1322 | 1323 | # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be 1324 | # generated, together with the HTML files, they form an Eclipse help plugin. To 1325 | # install this plugin and make it available under the help contents menu in 1326 | # Eclipse, the contents of the directory containing the HTML and XML files needs 1327 | # to be copied into the plugins directory of eclipse. The name of the directory 1328 | # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. 1329 | # After copying Eclipse needs to be restarted before the help appears. 1330 | # The default value is: NO. 1331 | # This tag requires that the tag GENERATE_HTML is set to YES. 1332 | 1333 | GENERATE_ECLIPSEHELP = NO 1334 | 1335 | # A unique identifier for the Eclipse help plugin. When installing the plugin 1336 | # the directory name containing the HTML and XML files should also have this 1337 | # name. Each documentation set should have its own identifier. 1338 | # The default value is: org.doxygen.Project. 1339 | # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. 1340 | 1341 | ECLIPSE_DOC_ID = org.doxygen.Project 1342 | 1343 | # If you want full control over the layout of the generated HTML pages it might 1344 | # be necessary to disable the index and replace it with your own. The 1345 | # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top 1346 | # of each HTML page. A value of NO enables the index and the value YES disables 1347 | # it. Since the tabs in the index contain the same information as the navigation 1348 | # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. 1349 | # The default value is: NO. 1350 | # This tag requires that the tag GENERATE_HTML is set to YES. 1351 | 1352 | DISABLE_INDEX = NO 1353 | 1354 | # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 1355 | # structure should be generated to display hierarchical information. If the tag 1356 | # value is set to YES, a side panel will be generated containing a tree-like 1357 | # index structure (just like the one that is generated for HTML Help). For this 1358 | # to work a browser that supports JavaScript, DHTML, CSS and frames is required 1359 | # (i.e. any modern browser). Windows users are probably better off using the 1360 | # HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can 1361 | # further fine-tune the look of the index. As an example, the default style 1362 | # sheet generated by doxygen has an example that shows how to put an image at 1363 | # the root of the tree instead of the PROJECT_NAME. Since the tree basically has 1364 | # the same information as the tab index, you could consider setting 1365 | # DISABLE_INDEX to YES when enabling this option. 1366 | # The default value is: NO. 1367 | # This tag requires that the tag GENERATE_HTML is set to YES. 1368 | 1369 | GENERATE_TREEVIEW = YES 1370 | 1371 | # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that 1372 | # doxygen will group on one line in the generated HTML documentation. 1373 | # 1374 | # Note that a value of 0 will completely suppress the enum values from appearing 1375 | # in the overview section. 1376 | # Minimum value: 0, maximum value: 20, default value: 4. 1377 | # This tag requires that the tag GENERATE_HTML is set to YES. 1378 | 1379 | ENUM_VALUES_PER_LINE = 4 1380 | 1381 | # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used 1382 | # to set the initial width (in pixels) of the frame in which the tree is shown. 1383 | # Minimum value: 0, maximum value: 1500, default value: 250. 1384 | # This tag requires that the tag GENERATE_HTML is set to YES. 1385 | 1386 | TREEVIEW_WIDTH = 250 1387 | 1388 | # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to 1389 | # external symbols imported via tag files in a separate window. 1390 | # The default value is: NO. 1391 | # This tag requires that the tag GENERATE_HTML is set to YES. 1392 | 1393 | EXT_LINKS_IN_WINDOW = NO 1394 | 1395 | # Use this tag to change the font size of LaTeX formulas included as images in 1396 | # the HTML documentation. When you change the font size after a successful 1397 | # doxygen run you need to manually remove any form_*.png images from the HTML 1398 | # output directory to force them to be regenerated. 1399 | # Minimum value: 8, maximum value: 50, default value: 10. 1400 | # This tag requires that the tag GENERATE_HTML is set to YES. 1401 | 1402 | FORMULA_FONTSIZE = 10 1403 | 1404 | # Use the FORMULA_TRANPARENT tag to determine whether or not the images 1405 | # generated for formulas are transparent PNGs. Transparent PNGs are not 1406 | # supported properly for IE 6.0, but are supported on all modern browsers. 1407 | # 1408 | # Note that when changing this option you need to delete any form_*.png files in 1409 | # the HTML output directory before the changes have effect. 1410 | # The default value is: YES. 1411 | # This tag requires that the tag GENERATE_HTML is set to YES. 1412 | 1413 | FORMULA_TRANSPARENT = YES 1414 | 1415 | # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see 1416 | # http://www.mathjax.org) which uses client side Javascript for the rendering 1417 | # instead of using prerendered bitmaps. Use this if you do not have LaTeX 1418 | # installed or if you want to formulas look prettier in the HTML output. When 1419 | # enabled you may also need to install MathJax separately and configure the path 1420 | # to it using the MATHJAX_RELPATH option. 1421 | # The default value is: NO. 1422 | # This tag requires that the tag GENERATE_HTML is set to YES. 1423 | 1424 | USE_MATHJAX = NO 1425 | 1426 | # When MathJax is enabled you can set the default output format to be used for 1427 | # the MathJax output. See the MathJax site (see: 1428 | # http://docs.mathjax.org/en/latest/output.html) for more details. 1429 | # Possible values are: HTML-CSS (which is slower, but has the best 1430 | # compatibility), NativeMML (i.e. MathML) and SVG. 1431 | # The default value is: HTML-CSS. 1432 | # This tag requires that the tag USE_MATHJAX is set to YES. 1433 | 1434 | MATHJAX_FORMAT = HTML-CSS 1435 | 1436 | # When MathJax is enabled you need to specify the location relative to the HTML 1437 | # output directory using the MATHJAX_RELPATH option. The destination directory 1438 | # should contain the MathJax.js script. For instance, if the mathjax directory 1439 | # is located at the same level as the HTML output directory, then 1440 | # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax 1441 | # Content Delivery Network so you can quickly see the result without installing 1442 | # MathJax. However, it is strongly recommended to install a local copy of 1443 | # MathJax from http://www.mathjax.org before deployment. 1444 | # The default value is: http://cdn.mathjax.org/mathjax/latest. 1445 | # This tag requires that the tag USE_MATHJAX is set to YES. 1446 | 1447 | MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest 1448 | 1449 | # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax 1450 | # extension names that should be enabled during MathJax rendering. For example 1451 | # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols 1452 | # This tag requires that the tag USE_MATHJAX is set to YES. 1453 | 1454 | MATHJAX_EXTENSIONS = 1455 | 1456 | # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces 1457 | # of code that will be used on startup of the MathJax code. See the MathJax site 1458 | # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an 1459 | # example see the documentation. 1460 | # This tag requires that the tag USE_MATHJAX is set to YES. 1461 | 1462 | MATHJAX_CODEFILE = 1463 | 1464 | # When the SEARCHENGINE tag is enabled doxygen will generate a search box for 1465 | # the HTML output. The underlying search engine uses javascript and DHTML and 1466 | # should work on any modern browser. Note that when using HTML help 1467 | # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) 1468 | # there is already a search function so this one should typically be disabled. 1469 | # For large projects the javascript based search engine can be slow, then 1470 | # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to 1471 | # search using the keyboard; to jump to the search box use + S 1472 | # (what the is depends on the OS and browser, but it is typically 1473 | # , /