CmakeMacros.txt 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #This file includes the global macros for the RakNet CMake files
  2. #
  3. # This file was taken from RakNet 4.082.
  4. # Please see licenses/RakNet license.txt for the underlying license and related copyright.
  5. #
  6. #
  7. # Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)
  8. #
  9. # This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
  10. # license found in the license.txt file in the root directory of this source tree.
  11. #
  12. MACRO(STANDARDSUBPROJECT PROJECTNAME)#Many of the projects just need the cpp files compiled and the header added to the project, this avoids repeating code
  13. project(${PROJECTNAME})
  14. FILE(GLOB ALL_CPP_SRCS *.cpp)
  15. FILE(GLOB ALL_HEADER_SRCS *.h)
  16. include_directories(${RAKNETHEADERFILES} ./)
  17. FIXCOMPILEOPTIONS()
  18. add_executable(${PROJECTNAME} ${ALL_CPP_SRCS} ${ALL_HEADER_SRCS})
  19. target_link_libraries(${PROJECTNAME} ${RAKNET_COMMON_LIBS})
  20. set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP Samples)
  21. ENDMACRO(STANDARDSUBPROJECT)
  22. MACRO(STANDARDSUBPROJECTWITHOPTIONS PROJECTNAME EXTRAINCLUDES EXTRASOURCES EXTRALIBS)#Same as STANDARDSUBPROJECT but allows options changing
  23. project(${PROJECTNAME})
  24. FILE(GLOB ALL_CPP_SRCS *.cpp)
  25. FILE(GLOB ALL_HEADER_SRCS *.h)
  26. FIXCOMPILEOPTIONS()
  27. include_directories(${RAKNETHEADERFILES} ./ ${EXTRAINCLUDES})
  28. add_executable(${PROJECTNAME} ${ALL_CPP_SRCS} ${ALL_HEADER_SRCS} ${EXTRASOURCES})
  29. target_link_libraries(${PROJECTNAME} ${RAKNET_COMMON_LIBS} ${EXTRALIBS})
  30. set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP Samples)
  31. ENDMACRO(STANDARDSUBPROJECTWITHOPTIONS)
  32. MACRO(STANDARDSUBPROJECTWITHOPTIONSSET PROJECTNAME)#Same as STANDARDSUBPROJECT but allows options changing, Items are passed by setting them for times when passing variable to the macro doesn't work
  33. project(${PROJECTNAME})
  34. FILE(GLOB ALL_CPP_SRCS *.cpp)
  35. FILE(GLOB ALL_HEADER_SRCS *.h)
  36. FIXCOMPILEOPTIONS()
  37. include_directories(${RAKNETHEADERFILES} ./ ${EXTRAINCLUDES})
  38. add_executable(${PROJECTNAME} ${ALL_CPP_SRCS} ${ALL_HEADER_SRCS} ${EXTRASOURCES})
  39. target_link_libraries(${PROJECTNAME} ${RAKNET_COMMON_LIBS} ${EXTRALIBS})
  40. set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP Samples)
  41. ENDMACRO(STANDARDSUBPROJECTWITHOPTIONSSET)
  42. MACRO(STANDARDCSUBPROJECT PROJECTNAME)#Same as STANDARDSUBPROJECT but for C files
  43. project(${PROJECTNAME})
  44. FILE(GLOB ALL_C_SRCS *.c)
  45. FILE(GLOB ALL_HEADER_SRCS *.h)
  46. include_directories(${RAKNETHEADERFILES} ./)
  47. FIXCOMPILEOPTIONS()
  48. add_executable(${PROJECTNAME} ${ALL_C_SRCS} ${ALL_HEADER_SRCS})
  49. target_link_libraries(${PROJECTNAME} ${RAKNET_COMMON_LIBS})
  50. set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP Samples)
  51. ENDMACRO(STANDARDCSUBPROJECT)
  52. MACRO(GETCURRENTFOLDER)#Gets the current foldername without the path
  53. string(REGEX REPLACE
  54. ".+/(.?)"
  55. "\\1"
  56. current_folder "${CMAKE_CURRENT_SOURCE_DIR}")
  57. ENDMACRO(GETCURRENTFOLDER)
  58. MACRO(VSUBFOLDER PROJECTNAME FOLDERNAME)#A macro interface for adding solution folders with a patched cmake
  59. set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP ${FOLDERNAME})
  60. ENDMACRO(VSUBFOLDER)
  61. MACRO(STANDARDNOTFOUNDMESSAGE NAME PLIBRARIES PINCLUDES EXTRA_INFORMATION)#If the libraries are not found, what to display
  62. message(STATUS "${NAME} was not found, paths were set to:\nLibrary: ${PLIBRARIES}\nInclude: ${PINCLUDES}\n${EXTRA_INFORMATION}The project will not compile unless installed to those locations.\nAs an alternative you can install the libraries and rerun cmake\n and see if the autosearch finds them")
  63. ENDMACRO(STANDARDNOTFOUNDMESSAGE)
  64. MACRO(ADDCPPDEF DEF)#Currently replaces CXX flags with a define for WIN32 projects, may be changed
  65. IF(WIN32)
  66. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D ${DEF}")
  67. ENDIF()
  68. ENDMACRO(ADDCPPDEF)
  69. MACRO(FIXCOMPILEOPTIONS)#Fix added compile options that may cause problems, also fix warnings
  70. IF(NOT ${CMAKE_GENERATOR} STREQUAL "MSYS Makefiles")
  71. IF(WIN32 AND NOT UNIX)
  72. STRING(REGEX REPLACE "/Z[0-9a-zA-Z]+" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  73. STRING(REGEX REPLACE "/Z[0-9a-zA-Z]+" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
  74. ADDCPPDEF(_CRT_SECURE_NO_DEPRECATE)
  75. ADDCPPDEF(_CRT_NONSTDC_NO_DEPRECATE)
  76. SET(CMAKE_CXX_WARNING_LEVEL 0)
  77. IF(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
  78. STRING(REGEX REPLACE "/W[0-4]" "/W0" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  79. ELSE(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
  80. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0")
  81. ENDIF(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
  82. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")# -nowarn 4018 -nowarn 4305 -nowarn 4244")
  83. ENDIF(WIN32 AND NOT UNIX)
  84. ENDIF(NOT ${CMAKE_GENERATOR} STREQUAL "MSYS Makefiles")
  85. ENDMACRO(FIXCOMPILEOPTIONS)
  86. MACRO(FIXLINKOPTIONS)#Fix added link options that may cause problems
  87. IF(WIN32 AND NOT UNIX)
  88. IF(NOT ${CMAKE_GENERATOR} STREQUAL "MSYS Makefiles")
  89. STRING(REGEX REPLACE "/STACK:[0-9]+" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
  90. STRING(REGEX REPLACE "/STACK:[0-9]+" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
  91. STRING(REGEX REPLACE "/machine:[0-9a-zA-Z]+" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
  92. STRING(REGEX REPLACE "/machine:[0-9a-zA-Z]+" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
  93. ENDIF(NOT ${CMAKE_GENERATOR} STREQUAL "MSYS Makefiles")
  94. ENDIF(WIN32 AND NOT UNIX)
  95. ENDMACRO(FIXLINKOPTIONS)
  96. #include(${RakNet_SOURCE_DIR}/CmakeIncludes/FindMacros.txt)#The macros for setting variables and performing finds