CMakeLists.txt 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. cmake_minimum_required(VERSION 3.22.1)
  2. ##################### Android设置 #####################
  3. set(CMAKE_SYSTEM_NAME ANDROID) # 设置目标编译平台参数 Android
  4. set(CMAKE_SYSTEM_VERSION 21) # 系统版本
  5. set(ANDROID_PLATFORM 21) # 平台版本
  6. set(ANDROID_ABI arm64-v8a) # 设置目标构架 armeabi-v7a arm64-v8a x86 x86_64
  7. set(ANDROID_NDK "C:/android-ndk-r27") # 设置ndk路径
  8. set(CMAKE_TOOLCHAIN_FILE "${ANDROID_NDK}/build/cmake/android.toolchain.cmake") # 设置交叉编译链的cmake配置
  9. file(GLOB ROOT_SOURCE *.cpp)
  10. file(GLOB ROOT_INLINE *.inl)
  11. file(GLOB ROOT_HEADER *.hpp)
  12. file(GLOB ROOT_TEXT ../*.txt)
  13. file(GLOB ROOT_MD ../*.md)
  14. file(GLOB ROOT_NAT ../util/glm.natvis)
  15. file(GLOB_RECURSE CORE_SOURCE ./detail/*.cpp)
  16. file(GLOB_RECURSE CORE_INLINE ./detail/*.inl)
  17. file(GLOB_RECURSE CORE_HEADER ./detail/*.hpp)
  18. file(GLOB_RECURSE EXT_SOURCE ./ext/*.cpp)
  19. file(GLOB_RECURSE EXT_INLINE ./ext/*.inl)
  20. file(GLOB_RECURSE EXT_HEADER ./ext/*.hpp)
  21. file(GLOB_RECURSE GTC_SOURCE ./gtc/*.cpp)
  22. file(GLOB_RECURSE GTC_INLINE ./gtc/*.inl)
  23. file(GLOB_RECURSE GTC_HEADER ./gtc/*.hpp)
  24. file(GLOB_RECURSE GTX_SOURCE ./gtx/*.cpp)
  25. file(GLOB_RECURSE GTX_INLINE ./gtx/*.inl)
  26. file(GLOB_RECURSE GTX_HEADER ./gtx/*.hpp)
  27. file(GLOB_RECURSE SIMD_SOURCE ./simd/*.cpp)
  28. file(GLOB_RECURSE SIMD_INLINE ./simd/*.inl)
  29. file(GLOB_RECURSE SIMD_HEADER ./simd/*.h)
  30. source_group("Text Files" FILES ${ROOT_TEXT} ${ROOT_MD})
  31. source_group("Core Files" FILES ${CORE_SOURCE})
  32. source_group("Core Files" FILES ${CORE_INLINE})
  33. source_group("Core Files" FILES ${CORE_HEADER})
  34. source_group("EXT Files" FILES ${EXT_SOURCE})
  35. source_group("EXT Files" FILES ${EXT_INLINE})
  36. source_group("EXT Files" FILES ${EXT_HEADER})
  37. source_group("GTC Files" FILES ${GTC_SOURCE})
  38. source_group("GTC Files" FILES ${GTC_INLINE})
  39. source_group("GTC Files" FILES ${GTC_HEADER})
  40. source_group("GTX Files" FILES ${GTX_SOURCE})
  41. source_group("GTX Files" FILES ${GTX_INLINE})
  42. source_group("GTX Files" FILES ${GTX_HEADER})
  43. source_group("SIMD Files" FILES ${SIMD_SOURCE})
  44. source_group("SIMD Files" FILES ${SIMD_INLINE})
  45. source_group("SIMD Files" FILES ${SIMD_HEADER})
  46. add_library(glm-header-only INTERFACE)
  47. add_library(glm::glm-header-only ALIAS glm-header-only)
  48. target_include_directories(glm-header-only INTERFACE
  49. "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>"
  50. "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
  51. )
  52. option(GLM_BUILD_LIBRARY "Build GLM as a library" OFF)
  53. if (GLM_BUILD_LIBRARY)
  54. add_library(glm
  55. ${ROOT_TEXT} ${ROOT_MD} ${ROOT_NAT}
  56. ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER}
  57. ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER}
  58. ${EXT_SOURCE} ${EXT_INLINE} ${EXT_HEADER}
  59. ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER}
  60. ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER}
  61. ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER}
  62. )
  63. add_library(glm::glm ALIAS glm)
  64. target_link_libraries(glm PUBLIC glm-header-only)
  65. else()
  66. add_library(glm INTERFACE)
  67. add_library(glm::glm ALIAS glm)
  68. target_link_libraries(glm INTERFACE glm-header-only)
  69. endif()