function(changelog_version version revision version_release)
    set(${version}         "" CACHE STRING "Latest ChangeLog Version"  FORCE)
    set(${revision}        "" CACHE STRING "Latest ChangeLog Revision" FORCE)
    set(${version_release} 0  CACHE STRING "Is this a versioned release without revision" FORCE)

    file(READ CHANGELOG.md changelog_file)

    if(NOT changelog_file)
        return()
    endif()

    string(REGEX MATCH "\n## +\\[([0-9.]+)(-([^] ]+))?\\] *.* *[0-9][0-9]?/" match_out "${changelog_file}")

    set(changelog_version "${CMAKE_MATCH_1}")

    set(is_version_release 0)
    set(changelog_revision "${CMAKE_MATCH_3}")
    if(NOT changelog_revision)
        set(is_version_release 1)
    endif()

    set(${version}         "${changelog_version}"  CACHE STRING "Latest ChangeLog Version"  FORCE)
    set(${revision}        "${changelog_revision}" CACHE STRING "Latest ChangeLog Revision" FORCE)
    set(${version_release} "${is_version_release}" CACHE STRING "Is this a versioned release without revision" FORCE)
endfunction()
