function(set_version VERSION BASE_DIR)
  if(DEFINED ENV{HIGHS_MAJOR} AND DEFINED ENV{HIGHS_MINOR})
    set(MAJOR $ENV{HIGHS_MAJOR})
    set(MINOR $ENV{HIGHS_MINOR})
  else()
    # Get Major and Minor and maybe Patch from Version.txt
    file(STRINGS "${BASE_DIR}/Version.txt" VERSION_STR)
    foreach(STR ${VERSION_STR})
      if(${STR} MATCHES "HIGHS_MAJOR=(.*)")
        set(MAJOR ${CMAKE_MATCH_1})
      elseif(${STR} MATCHES "HIGHS_MINOR=(.*)")
        set(MINOR ${CMAKE_MATCH_1})
      elseif(${STR} MATCHES "HIGHS_PATCH=(.*)")
        set(PATCH ${CMAKE_MATCH_1})
      endif()
    endforeach()
  endif()

  if(DEFINED ENV{HIGHS_PATCH})
    set(PATCH $ENV{HIGHS_PATCH})
  elseif(NOT DEFINED PATCH)
    set(PATCH 999)
  endif()

  set(${VERSION} "${MAJOR}.${MINOR}.${PATCH}" PARENT_SCOPE)
endfunction()