CocosConfigDefine.cmake 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #Please use them everywhere
  2. #WINDOWS = Windows Desktop
  3. #ANDROID = Android
  4. #IOS = iOS
  5. #MACOSX = MacOS X
  6. #LINUX = Linux
  7. if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  8. set(WINDOWS TRUE)
  9. set(PLATFORM_FOLDER win32)
  10. elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android")
  11. set(PLATFORM_FOLDER android)
  12. elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  13. if(ANDROID)
  14. set(PLATFORM_FOLDER android)
  15. else()
  16. set(LINUX TRUE)
  17. set(PLATFORM_FOLDER linux)
  18. endif()
  19. elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  20. if(IOS)
  21. set(APPLE TRUE)
  22. set(PLATFORM_FOLDER ios)
  23. else()
  24. set(APPLE TRUE)
  25. set(MACOSX TRUE)
  26. set(PLATFORM_FOLDER mac)
  27. endif()
  28. else()
  29. message(FATAL_ERROR "Unsupported platform, CMake will exit")
  30. return()
  31. endif()
  32. # generators that are capable of organizing into a hierarchy of folders
  33. set_property(GLOBAL PROPERTY USE_FOLDERS ON)
  34. # simplify generator condition, please use them everywhere
  35. if(CMAKE_GENERATOR STREQUAL Xcode)
  36. set(XCODE TRUE)
  37. elseif(CMAKE_GENERATOR MATCHES Visual)
  38. set(VS TRUE)
  39. endif()
  40. message(STATUS "CMAKE_GENERATOR: ${CMAKE_GENERATOR}")
  41. if(CMAKE_CONFIGURATION_TYPES)
  42. set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Reset the configurations to what we need" FORCE)
  43. message(STATUS "CMAKE_CONFIGURATION_TYPES: ${CMAKE_CONFIGURATION_TYPES}")
  44. else()
  45. if(NOT CMAKE_BUILD_TYPE)
  46. if(DEBUG_MODE) # build mode, Debug is default value
  47. set(CMAKE_BUILD_TYPE Debug)
  48. else()
  49. set(CMAKE_BUILD_TYPE Release)
  50. endif()
  51. endif()
  52. message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
  53. endif()
  54. # custom target property for lua/js link
  55. define_property(TARGET
  56. PROPERTY CC_JS_DEPEND
  57. BRIEF_DOCS "cocos2d js depend libs"
  58. FULL_DOCS "use to save depend libs of cocos2d js project"
  59. )
  60. define_property(TARGET
  61. PROPERTY CC_LUA_DEPEND
  62. BRIEF_DOCS "cocos2d lua depend libs"
  63. FULL_DOCS "use to save depend libs of cocos2d lua project"
  64. )
  65. # check c++ standard
  66. set(CMAKE_C_STANDARD 99)
  67. set(CMAKE_C_STANDARD_REQUIRED ON)
  68. set(CMAKE_CXX_STANDARD 11)
  69. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  70. # check visual studio version
  71. if(WINDOWS)
  72. # not support other compile tools except MSVC for now
  73. if(MSVC)
  74. # Visual Studio 2015, MSVC_VERSION 1900 (v140 toolset)
  75. # Visual Studio 2017, MSVC_VERSION 1910-1919 (v141 toolset)
  76. if(${MSVC_VERSION} EQUAL 1900 OR ${MSVC_VERSION} GREATER 1900)
  77. message(STATUS "using Windows MSVC generate cocos2d-x project, MSVC_VERSION:${MSVC_VERSION}")
  78. else()
  79. message(FATAL_ERROR "using Windows MSVC generate cocos2d-x project, MSVC_VERSION:${MSVC_VERSION} lower than needed")
  80. endif()
  81. else()
  82. message(FATAL_ERROR "please using Windows MSVC compile cocos2d-x project, support other compile tools not yet")
  83. endif()
  84. endif()
  85. # Set macro definitions for special platforms
  86. function(use_cocos2dx_compile_define target)
  87. target_compile_definitions(${target} PUBLIC $<$<CONFIG:Debug>:COCOS2D_DEBUG=1>)
  88. if(APPLE)
  89. target_compile_definitions(${target} PUBLIC __APPLE__)
  90. target_compile_definitions(${target} PUBLIC USE_FILE32API)
  91. elseif(LINUX)
  92. target_compile_definitions(${target} PUBLIC LINUX)
  93. target_compile_definitions(${target} PUBLIC _GNU_SOURCE)
  94. elseif(ANDROID)
  95. target_compile_definitions(${target} PUBLIC ANDROID)
  96. target_compile_definitions(${target} PUBLIC USE_FILE32API)
  97. elseif(WINDOWS)
  98. target_compile_definitions(${target}
  99. PUBLIC WIN32
  100. PUBLIC _WIN32
  101. PUBLIC _WINDOWS
  102. PUBLIC UNICODE
  103. PUBLIC _UNICODE
  104. PUBLIC _CRT_SECURE_NO_WARNINGS
  105. PUBLIC _SCL_SECURE_NO_WARNINGS
  106. )
  107. if(BUILD_SHARED_LIBS)
  108. target_compile_definitions(${target}
  109. PUBLIC _USRDLL
  110. PUBLIC _EXPORT_DLL_
  111. PUBLIC _USEGUIDLL
  112. PUBLIC _USREXDLL
  113. PUBLIC _USRSTUDIODLL
  114. PUBLIC _USE3DDLL
  115. )
  116. else()
  117. target_compile_definitions(${target} PUBLIC CC_STATIC)
  118. endif()
  119. endif()
  120. endfunction()
  121. # Set compiler options
  122. function(use_cocos2dx_compile_options target)
  123. if(MSVC)
  124. target_compile_options(${target}
  125. PUBLIC /MP
  126. )
  127. endif()
  128. endfunction()