CopyMSVCBins.cmake 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. # Doesn't realy make sense anywhere else
  2. if(NOT MSVC)
  3. return()
  4. endif()
  5. # Internal variable to avoid copying more than once
  6. if(COPIED_DEPENDENCIES)
  7. return()
  8. endif()
  9. # Do not attempt to copy if an external intall files dir is in use
  10. if(DEFINED ENV{obsAdditionalInstallFiles})
  11. return()
  12. endif()
  13. option(COPY_DEPENDENCIES "Automaticaly try copying all dependencies" OFF)
  14. if(NOT COPY_DEPENDENCIES)
  15. return()
  16. endif()
  17. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  18. set(_bin_suffix 64)
  19. else()
  20. set(_bin_suffix 32)
  21. endif()
  22. find_package(Libavcodec QUIET)
  23. find_package(Libx264 QUIET)
  24. find_package(Libfdk QUIET)
  25. find_package(Qt5Core QUIET)
  26. file(GLOB FFMPEG_BIN_FILES
  27. "${FFMPEG_INCLUDE_DIR}/../bin${_bin_suffix}/av*-*.dll"
  28. "${FFMPEG_INCLUDE_DIR}/../bin${_bin_suffix}/sw*-*.dll"
  29. "${FFMPEG_INCLUDE_DIR}/../bin${_bin_suffix}/libbz2*.dll"
  30. "${FFMPEG_INCLUDE_DIR}/../bin${_bin_suffix}/zlib*.dll"
  31. "${FFMPEG_INCLUDE_DIR}/../bin/av*-*.dll"
  32. "${FFMPEG_INCLUDE_DIR}/../bin/sw*-*.dll"
  33. "${FFMPEG_INCLUDE_DIR}/../bin/libbz2*.dll"
  34. "${FFMPEG_INCLUDE_DIR}/../bin/zlib*.dll"
  35. "${FFMPEG_INCLUDE_DIR}/bin/av*-*.dll"
  36. "${FFMPEG_INCLUDE_DIR}/bin/sw*-*.dll"
  37. "${FFMPEG_INCLUDE_DIR}/bin/libbz2*.dll"
  38. "${FFMPEG_INCLUDE_DIR}/bin/zlib*.dll"
  39. "${FFMPEG_INCLUDE_DIR}/bin${_bin_suffix}/av*-*.dll"
  40. "${FFMPEG_INCLUDE_DIR}/bin${_bin_suffix}/sw*-*.dll"
  41. "${FFMPEG_INCLUDE_DIR}/bin${_bin_suffix}/libbz2*.dll"
  42. "${FFMPEG_INCLUDE_DIR}/bin${_bin_suffix}/zlib*.dll")
  43. file(GLOB X264_BIN_FILES
  44. "${X264_INCLUDE_DIR}/../bin${_bin_suffix}/libx264-*.dll"
  45. "${X264_INCLUDE_DIR}/../bin/libx264-*.dll"
  46. "${X264_INCLUDE_DIR}/bin/libx264-*.dll"
  47. "${X264_INCLUDE_DIR}/bin${_bin_suffix}/libx264-*.dll")
  48. file(GLOB LIBFDK_BIN_FILES
  49. "${Libfdk_INCLUDE_DIR}/../bin${_bin_suffix}/libfdk*-*.dll"
  50. "${Libfdk_INCLUDE_DIR}/../bin/libfdk*-*.dll"
  51. "${Libfdk_INCLUDE_DIR}/bin/libfdk*-*.dll"
  52. "${Libfdk_INCLUDE_DIR}/bin${_bin_suffix}/libfdk*-*.dll")
  53. if (CMAKE_CONFIGURATION_TYPES MATCHES "Debug")
  54. file(GLOB QT_DEBUG_BIN_FILES
  55. "${Qt5Core_DIR}/../../../bin/Qt5Cored.dll"
  56. "${Qt5Core_DIR}/../../../bin/Qt5Guid.dll"
  57. "${Qt5Core_DIR}/../../../bin/Qt5Widgetsd.dll"
  58. "${Qt5Core_DIR}/../../../bin/Qt5Networkd.dll"
  59. "${Qt5Core_DIR}/../../../bin/libGLESv2d.dll"
  60. "${Qt5Core_DIR}/../../../bin/libEGLd.dll")
  61. file(GLOB QT_DEBUG_PLAT_BIN_FILES
  62. "${Qt5Core_DIR}/../../../plugins/platforms/qwindowsd.dll")
  63. endif()
  64. if (CMAKE_CONFIGURATION_TYPES MATCHES "Rel")
  65. file(GLOB QT_BIN_FILES
  66. "${Qt5Core_DIR}/../../../bin/Qt5Core.dll"
  67. "${Qt5Core_DIR}/../../../bin/Qt5Gui.dll"
  68. "${Qt5Core_DIR}/../../../bin/Qt5Widgets.dll"
  69. "${Qt5Core_DIR}/../../../bin/Qt5Network.dll"
  70. "${Qt5Core_DIR}/../../../bin/libGLESv2.dll"
  71. "${Qt5Core_DIR}/../../../bin/libEGL.dll")
  72. file(GLOB QT_PLAT_BIN_FILES
  73. "${Qt5Core_DIR}/../../../plugins/platforms/qwindows.dll")
  74. endif()
  75. file(GLOB QT_ICU_BIN_FILES
  76. "${Qt5Core_DIR}/../../../bin/icu*.dll")
  77. if(MSVC12)
  78. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  79. set(D3D_COMPILER_PATH
  80. "$ENV{VS120COMNTOOLS}/../../VC/bin/amd64/D3DCompiler_*.dll"
  81. "$ENV{WindowsSdkDir}/bin/x64/d3dcompiler_*.dll"
  82. "C:/Program Files (x86)/Windows Kits/8.1/bin/x64/d3dcompiler_*.dll"
  83. "C:/Program Files/Windows Kits/8.1/bin/x64/d3dcompiler_*.dll")
  84. else()
  85. set(D3D_COMPILER_PATH
  86. "$ENV{VS120COMNTOOLS}/../../VC/bin/D3DCompiler_*.dll"
  87. "$ENV{WindowsSdkDir}/bin/x86/d3dcompiler_*.dll"
  88. "C:/Program Files (x86)/Windows Kits/8.1/bin/x86/d3dcompiler_*.dll"
  89. "C:/Program Files/Windows Kits/8.1/bin/x86/d3dcompiler_*.dll"
  90. "C:/Program Files/Windows Kits/8.1/bin/d3dcompiler_*.dll")
  91. endif()
  92. endif()
  93. file(TO_CMAKE_PATH "${D3D_COMPILER_PATH}" D3D_COMPILER_PATH)
  94. string(REGEX REPLACE "//" "/" D3D_COMPILER_PATH "${D3D_COMPILER_PATH}")
  95. file(GLOB D3D_COMPILER_BIN
  96. ${D3D_COMPILER_PATH})
  97. set(ALL_BASE_BIN_FILES
  98. ${FFMPEG_BIN_FILES}
  99. ${X264_BIN_FILES}
  100. ${LIBFDK_BIN_FILES}
  101. ${QT_ICU_BIN_FILES}
  102. ${D3D_COMPILER_BIN})
  103. set(ALL_REL_BIN_FILES
  104. ${QT_BIN_FILES})
  105. set(ALL_DBG_BIN_FILES
  106. ${QT_DEBUG_BIN_FILES})
  107. set(ALL_PLATFORM_BIN_FILES)
  108. set(ALL_PLATFORM_REL_BIN_FILES
  109. ${QT_PLAT_BIN_FILES})
  110. set(ALL_PLATFORM_DBG_BIN_FILES
  111. ${QT_DEBUG_PLAT_BIN_FILES})
  112. foreach(list
  113. ALL_BASE_BIN_FILES ALL_REL_BIN_FILES ALL_DBG_BIN_FILES
  114. ALL_PLATFORM_BIN_FILES ALL_PLATFORM_REL_BIN_FILES ALL_PLATFORM_DBG_BIN_FILES)
  115. if(${list})
  116. list(REMOVE_DUPLICATES ${list})
  117. endif()
  118. endforeach()
  119. message(STATUS "FFmpeg files: ${FFMPEG_BIN_FILES}")
  120. message(STATUS "x264 files: ${X264_BIN_FILES}")
  121. message(STATUS "Libfdk files: ${LIBFDK_BIN_FILES}")
  122. message(STATUS "QT Debug files: ${QT_DEBUG_BIN_FILES}")
  123. message(STATUS "QT Debug Platform files: ${QT_DEBUG_PLAT_BIN_FILES}")
  124. message(STATUS "QT Release files: ${QT_BIN_FILES}")
  125. message(STATUS "QT Release Platform files: ${QT_PLAT_BIN_FILES}")
  126. message(STATUS "QT ICU files: ${QT_ICU_BIN_FILES}")
  127. message(STATUS "D3D Compiler: ${D3D_COMPILER_BIN}")
  128. foreach(BinFile ${ALL_BASE_BIN_FILES})
  129. message(STATUS "copying ${BinFile} to ${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}")
  130. file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}/")
  131. endforeach()
  132. foreach(BinFile ${ALL_REL_BIN_FILES})
  133. message(STATUS "copying ${BinFile} to ${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r")
  134. file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r/")
  135. endforeach()
  136. foreach(BinFile ${ALL_DBG_BIN_FILES})
  137. message(STATUS "copying ${BinFile} to ${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d")
  138. file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/")
  139. endforeach()
  140. foreach(BinFile ${ALL_PLATFORM_BIN_FILES})
  141. make_directory("${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}/platforms")
  142. file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}/platforms/")
  143. endforeach()
  144. foreach(BinFile ${ALL_PLATFORM_REL_BIN_FILES})
  145. make_directory("${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r/platforms")
  146. file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r/platforms/")
  147. endforeach()
  148. foreach(BinFile ${ALL_PLATFORM_DBG_BIN_FILES})
  149. make_directory("${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/platforms")
  150. file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/platforms/")
  151. endforeach()
  152. set(COPIED_DEPENDENCIES TRUE CACHE BOOL "Dependencies have been copied, set to false to copy again" FORCE)