FindFBX.cmake 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. # Copyright (c) 2014-present, Facebook, Inc.
  2. # All rights reserved.
  3. #
  4. # Helper function for finding the FBX SDK.
  5. # Cribbed & tweaked from https://github.com/floooh/fbxc/
  6. #
  7. # params: FBXSDK_VERSION
  8. # FBXSDK_SDKS
  9. #
  10. # sets: FBXSDK_FOUND
  11. # FBXSDK_DIR
  12. # FBXSDK_LIBRARY
  13. # FBXSDK_LIBRARY_DEBUG
  14. # FBXSDK_INCLUDE_DIR
  15. #
  16. # semi-hack to detect architecture
  17. if( CMAKE_SIZEOF_VOID_P MATCHES 8 )
  18. # void ptr = 8 byte --> x86_64
  19. set(ARCH_32 OFF)
  20. else()
  21. # void ptr != 8 byte --> x86
  22. set(ARCH_32 OFF)
  23. endif()
  24. if (NOT DEFINED FBXSDK_VERSION)
  25. set(FBXSDK_VERSION "2020.2")
  26. endif()
  27. set(_fbxsdk_vstudio_version "vs2019")
  28. message("Looking for FBX SDK version: ${FBXSDK_VERSION}")
  29. if (NOT DEFINED FBXSDK_SDKS)
  30. set(FBXSDK_SDKS "${CMAKE_CURRENT_SOURCE_DIR}/sdk")
  31. endif()
  32. get_filename_component(FBXSDK_SDKS_ABS ${FBXSDK_SDKS} ABSOLUTE)
  33. set(FBXSDK_APPLE_ROOT "${FBXSDK_SDKS_ABS}/Darwin/${FBXSDK_VERSION}")
  34. set(FBXSDK_LINUX_ROOT "${FBXSDK_SDKS_ABS}/Linux/${FBXSDK_VERSION}")
  35. set(FBXSDK_WINDOWS_ROOT "${FBXSDK_SDKS_ABS}/Windows/${FBXSDK_VERSION}")
  36. if (APPLE)
  37. set(_fbxsdk_root "${FBXSDK_APPLE_ROOT}")
  38. set(_fbxsdk_libdir_debug "lib/clang/debug")
  39. set(_fbxsdk_libdir_release "lib/clang/release")
  40. set(_fbxsdk_libname_debug "libfbxsdk.a")
  41. set(_fbxsdk_libname_release "libfbxsdk.a")
  42. elseif (WIN32)
  43. set(_fbxsdk_root "${FBXSDK_WINDOWS_ROOT}")
  44. if (ARCH_32)
  45. set(_fbxsdk_libdir_debug "lib/${_fbxsdk_vstudio_version}/x86/debug")
  46. set(_fbxsdk_libdir_release "lib/${_fbxsdk_vstudio_version}/x86/release")
  47. else()
  48. set(_fbxsdk_libdir_debug "lib/${_fbxsdk_vstudio_version}/x64/debug")
  49. set(_fbxsdk_libdir_release "lib/${_fbxsdk_vstudio_version}/x64/release")
  50. endif()
  51. set(_fbxsdk_libname_debug "libfbxsdk-md.lib")
  52. set(_fbxsdk_libname_release "libfbxsdk-md.lib")
  53. elseif (UNIX)
  54. set(_fbxsdk_root "${FBXSDK_LINUX_ROOT}")
  55. if (ARCH_32)
  56. set(_fbxsdk_libdir_debug "lib/gcc/x86/debug")
  57. set(_fbxsdk_libdir_release "lib/gcc/x86/release")
  58. else()
  59. set(_fbxsdk_libdir_debug "lib/gcc/x64/debug")
  60. set(_fbxsdk_libdir_release "lib/gcc/x64/release")
  61. endif()
  62. set(_fbxsdk_libname_debug "libfbxsdk.a")
  63. set(_fbxsdk_libname_release "libfbxsdk.a")
  64. else()
  65. message(FATAL_ERROR, "Unknown platform. Can't find FBX SDK.")
  66. endif()
  67. # should point the the FBX SDK installation dir
  68. set(FBXSDK_ROOT "${_fbxsdk_root}")
  69. message("FBXSDK_ROOT: ${FBXSDK_ROOT}")
  70. # find header dir and libs
  71. find_path(FBXSDK_INCLUDE_DIR "fbxsdk.h"
  72. NO_CMAKE_FIND_ROOT_PATH
  73. PATHS ${FBXSDK_ROOT}
  74. PATH_SUFFIXES "include")
  75. message("FBXSDK_INCLUDE_DIR: ${FBXSDK_INCLUDE_DIR}")
  76. find_library(FBXSDK_LIBRARY ${_fbxsdk_libname_release}
  77. NO_CMAKE_FIND_ROOT_PATH
  78. PATHS "${FBXSDK_ROOT}/${_fbxsdk_libdir_release}")
  79. message("FBXSDK_LIBRARY: ${FBXSDK_LIBRARY}")
  80. find_library(FBXSDK_LIBRARY_DEBUG ${_fbxsdk_libname_debug}
  81. NO_CMAKE_FIND_ROOT_PATH
  82. PATHS "${FBXSDK_ROOT}/${_fbxsdk_libdir_debug}")
  83. message("FBXSDK_LIBRARY_DEBUG: ${FBXSDK_LIBRARY_DEBUG}")
  84. if (FBXSDK_INCLUDE_DIR AND FBXSDK_LIBRARY AND FBXSDK_LIBRARY_DEBUG)
  85. set(FBXSDK_FOUND YES)
  86. else()
  87. set(FBXSDK_FOUND NO)
  88. endif()