WindowsDLLVersion.cmake 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. macro(rvc_set_win_dll_ver _prefix _ver)
  2. string(STRIP ${_ver} ${_prefix}_VERSION_STRING)
  3. set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
  4. string(REGEX REPLACE "${VERSION_REGEX}" "\\1" ${_prefix}_VERSION_MAJOR "${${_prefix}_VERSION_STRING}")
  5. string(REGEX REPLACE "${VERSION_REGEX}" "\\2" ${_prefix}_VERSION_MINOR "${${_prefix}_VERSION_STRING}")
  6. string(REGEX REPLACE "${VERSION_REGEX}" "\\3" ${_prefix}_VERSION_REVISION "${${_prefix}_VERSION_STRING}")
  7. string(REGEX REPLACE "${VERSION_REGEX}" "\\4" ${_prefix}_VERSION_SUFFIX "${${_prefix}_VERSION_STRING}")
  8. set(${_prefix}_API_VERSION "${${_prefix}_VERSION_MAJOR}")
  9. set(${_prefix}_VERSION "${${_prefix}_VERSION_MAJOR}.${${_prefix}_VERSION_MINOR}.${${_prefix}_VERSION_REVISION}")
  10. if (${_prefix}_VERSION_SUFFIX)
  11. set(${_prefix}_VERSION_FULL "${${_prefix}_VERSION}-${${_prefix}_VERSION_SUFFIX}")
  12. else()
  13. set(${_prefix}_VERSION_FULL "${${_prefix}_VERSION}")
  14. endif()
  15. message(STATUS "${_prefix}_VERSION = ${${_prefix}_VERSION_FULL}")
  16. if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/version.h.in)
  17. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
  18. endif()
  19. # On windows create dll version information.
  20. if (WIN32)
  21. set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
  22. set (RC_VERSION_MINOR ${${_prefix}_VERSION_MAJOR})
  23. set (RC_VERSION_BUILD ${${_prefix}_VERSION_MINOR})
  24. set (RC_VERSION_PATCH ${${_prefix}_VERSION_REVISION})
  25. configure_file(
  26. ${CMAKE_SOURCE_DIR}/version.rc.in
  27. ${CMAKE_CURRENT_BINARY_DIR}/version.rc
  28. @ONLY)
  29. set ( ${_prefix}_SRCS ${${_prefix}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
  30. endif()
  31. endmacro(rvc_set_win_dll_ver)