diff --git a/CMakeLists.txt b/CMakeLists.txt index 1897775..00626c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,7 @@ enable_testing() ## Project stuff option(YAML_CPP_BUILD_TOOLS "Enable testing and parse tools" ON) option(YAML_CPP_BUILD_CONTRIB "Enable contrib stuff in library" ON) +option(USE_DOXYGEN "Enable doxygen generation" ON) ## Build options # --> General @@ -117,6 +118,7 @@ find_package(Boost REQUIRED) include_directories(${Boost_INCLUDE_DIRS}) + ### ### General compilation settings ### @@ -250,14 +252,17 @@ endif() ### if(WIN32) set(_library_dir bin) # .dll are in PATH, like executables + set(_share_dir bin) else() set(_library_dir lib) + set(_share_dir share) endif() set(INCLUDE_INSTALL_ROOT_DIR include) set(INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_ROOT_DIR}/yaml-cpp) set(LIB_INSTALL_DIR "${_library_dir}${LIB_SUFFIX}") +set(SHARE_INSTALL_DIR "${_share_dir}${LIB_SUFFIX}") set(_INSTALL_DESTINATIONS RUNTIME DESTINATION bin @@ -323,6 +328,38 @@ if(UNIX) install(FILES ${PC_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) endif() +### +### Doxygen +### +if(USE_DOXYGEN) + +find_package(Doxygen) +if(DOXYGEN_FOUND) + +set(DOC_DIR "${PROJECT_BINARY_DIR}/doc") + +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in" + "${PROJECT_BINARY_DIR}/Doxyfile" + @ONLY + ) + +add_custom_target(doc + COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" VERBATIM + ) + +install(DIRECTORY + "${DOC_DIR}/" + DESTINATION + "${SHARE_INSTALL_DIR}/doc/yaml-cpp${LIB_SUFFIX}" + PATTERN "${DOC_DIR}/*" + ) + +endif(DOXYGEN_FOUND) + +endif(USE_DOXYGEN) ### ### Extras diff --git a/Doxyfile.in b/Doxyfile.in new file mode 100644 index 0000000..29b2b5b --- /dev/null +++ b/Doxyfile.in @@ -0,0 +1,131 @@ +DOXYFILE_ENCODING = UTF-8 + +PROJECT_NAME = "@PROJECT_NAME@" + +PROJECT_NUMBER = @YAML_CPP_VERSION@ + +PROJECT_BRIEF = "yaml-cpp is a YAML parser and emitter in C++ matching the YAML 1.2 spec." +OUTPUT_DIRECTORY = @DOC_DIR@ + +INPUT = @CMAKE_CURRENT_SOURCE_DIR@ +USE_MDFILE_AS_MAINPAGE = @CMAKE_CURRENT_SOURCE_DIR@/README.md + +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES + +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO + +QT_AUTOBRIEF = NO + +MULTILINE_CPP_IS_BRIEF = NO + +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO + +TAB_SIZE = 2 + +MARKDOWN_SUPPORT = YES + +AUTOLINK_SUPPORT = YES + +SUBGROUPING = YES + +TYPEDEF_HIDES_STRUCT = YES + +EXTRACT_ALL = YES + +EXTRACT_PRIVATE = YES + +EXTRACT_PACKAGE = YES + +EXTRACT_STATIC = YES + +EXTRACT_LOCAL_CLASSES = YES + +EXTRACT_LOCAL_METHODS = YES +EXTRACT_ANON_NSPACES = NO + +SHOW_INCLUDE_FILES = YES +SHOW_GROUPED_MEMB_INC = NO + +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES + +SORT_BRIEF_DOCS = NO + +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO + +SORT_BY_SCOPE_NAME = NO + +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES + +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES + +WARN_IF_DOC_ERROR = YES + +WARN_NO_PARAMDOC = NO + +WARN_FORMAT = "$file:$line: $text" + +RECURSIVE = YES + +EXCLUDE_SYMLINKS = YES + +FILTER_SOURCE_FILES = NO + +SOURCE_BROWSER = YES + +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES + +REFERENCED_BY_RELATION = NO + +REFERENCES_RELATION = NO + +REFERENCES_LINK_SOURCE = YES + +SOURCE_TOOLTIPS = YES + +USE_HTAGS = NO + +VERBATIM_HEADERS = YES +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +GENERATE_HTML = YES + +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html + +HTML_COLORSTYLE_HUE = 220 + +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 + +HTML_TIMESTAMP = YES + +HTML_DYNAMIC_SECTIONS = NO +HTML_INDEX_NUM_ENTRIES = 100 + +SEARCHENGINE = YES + +SERVER_BASED_SEARCH = NO + +CLASS_DIAGRAMS = YES + +HIDE_UNDOC_RELATIONS = YES + +GENERATE_LATEX = NO diff --git a/README.md b/README.md index 54263ef..1c0399e 100644 --- a/README.md +++ b/README.md @@ -19,16 +19,16 @@ yaml-cpp uses [CMake](http://www.cmake.org) to support cross-platform building. 2. Navigate into the source directory, and type: -``` -mkdir build -cd build -``` + + mkdir build + cd build + 3. Run CMake. The basic syntax is: -``` -cmake [-G generator] [-DBUILD_SHARED_LIBS=ON|OFF] .. -``` + + cmake [-G generator] [-DBUILD_SHARED_LIBS=ON|OFF] .. + * The `generator` is whatever type of build system you'd like to use. To see a full list of generators on your platform, just run `cmake` (with no arguments). For example: * On Windows, you might use "Visual Studio 12 2013" to generate a Visual Studio 2013 solution @@ -37,6 +37,11 @@ cmake [-G generator] [-DBUILD_SHARED_LIBS=ON|OFF] .. * yaml-cpp defaults to building a static library, but you may build a shared library by specifying `-DBUILD_SHARED_LIBS=ON`. + * By default the build is configured to generate doxygen documentation for the + library. If you'd like to turn this off use `-DUSE_DOXYGEN=OFF`. If you _do_ + use doxygen then __make sure you run__: `make doc` __before__ running `make + install`. + * For more options on customizing the build, see the [CMakeLists.txt](https://github.com/jbeder/yaml-cpp/blob/master/CMakeLists.txt) file. 4. Build it!