You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

207 lines
5.4 KiB

12 months ago
  1. include(CMakeParseArguments)
  2. # zadd_library(
  3. #
  4. # # #################### 目标文件 #################
  5. # TARGET
  6. # ...
  7. #
  8. # # #################### 依赖 ####################
  9. # DEPENDENCIES
  10. # ...
  11. #
  12. # # #################### 头文件路径 ###############
  13. # INCLUDE_DIRECTORIES
  14. # ...
  15. #
  16. # # #################### 链接的第三方库 ############
  17. # LINK_LIBRARIES
  18. # ...
  19. #
  20. # # #################### 源文件 ##################
  21. # SRC
  22. # ...
  23. # )
  24. function(zadd_library)
  25. set(oneValueArgs NAME TARGET)
  26. set(multiValueArgs
  27. INSTALL
  28. SRC
  29. DEPENDENCIES
  30. DEFINES
  31. LINK_LIBRARIES
  32. LINK_DIRECTORIES
  33. INCLUDE_DIRECTORIES)
  34. cmake_parse_arguments(ZAL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
  35. message("=================================================================")
  36. message("= add_library: ${ZAL_TARGET}")
  37. message("=================================================================")
  38. message("CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}")
  39. message("CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
  40. if(ZAL_TARGET)
  41. message("ADD TARGET:${ZAL_TARGET}")
  42. else()
  43. message(FATAL_ERROR,"ZAL not set target")
  44. endif()
  45. if(ZAL_INSTALL)
  46. message("INSTALL : ${ZAL_INSTALL}")
  47. endif()
  48. if(ZAL_SRC)
  49. # message("SRC: ${ZAL_SRC}")
  50. # message("SRC:")
  51. # foreach(EACH ${ZAL_SRC})
  52. # message(" ${EACH}")
  53. # endforeach(EACH)
  54. else()
  55. message(FATAL_ERROR,"ZAL not set src")
  56. endif()
  57. add_library(${ZAL_TARGET} ${ZAL_SRC})
  58. if(ZAL_DEFINES)
  59. message("DEFINES:")
  60. foreach(EACH ${ZAL_DEFINES})
  61. message(" ${EACH}")
  62. endforeach(EACH)
  63. target_compile_definitions(${ZAL_TARGET} PRIVATE ${ZAL_DEFINES})
  64. endif()
  65. if(ZAL_DEPENDENCIES)
  66. message("DEPENDENCIES:")
  67. foreach(EACH ${ZAL_DEPENDENCIES})
  68. message(" ${EACH}")
  69. endforeach(EACH)
  70. add_dependencies(${ZAL_TARGET} ${ZAL_DEPENDENCIES})
  71. endif()
  72. if(ZAL_LINK_LIBRARIES)
  73. message("LINK_LIBRARIES:")
  74. foreach(EACH ${ZAL_LINK_LIBRARIES})
  75. message(" ${EACH}")
  76. endforeach(EACH)
  77. target_link_libraries(${ZAL_TARGET} ${ZAL_LINK_LIBRARIES})
  78. endif()
  79. if(ZAL_LINK_DIRECTORIES)
  80. message("LINK_DIRECTORIES:")
  81. foreach(EACH ${ZAL_LINK_DIRECTORIES})
  82. message(" ${EACH}")
  83. endforeach(EACH)
  84. target_link_directories(${ZAL_TARGET} PRIVATE ${ZAL_LINK_DIRECTORIES})
  85. endif()
  86. if(ZAL_INCLUDE_DIRECTORIES)
  87. message("INCLUDE_DIRECTORIES:")
  88. foreach(EACH ${ZAL_INCLUDE_DIRECTORIES})
  89. message(" ${EACH}")
  90. endforeach(EACH)
  91. target_include_directories(${ZAL_TARGET} PRIVATE ${ZAL_INCLUDE_DIRECTORIES})
  92. endif()
  93. if(ZAL_INSTALL)
  94. install(TARGETS ${ZAL_TARGET} DESTINATION ${ZAL_INSTALL})
  95. endif()
  96. message("")
  97. message("")
  98. endfunction(zadd_library)
  99. function(zadd_share_library)
  100. set(oneValueArgs NAME TARGET)
  101. set(multiValueArgs
  102. INSTALL
  103. SRC
  104. DEPENDENCIES
  105. DEFINES
  106. LINK_LIBRARIES
  107. LINK_DIRECTORIES
  108. INCLUDE_DIRECTORIES)
  109. cmake_parse_arguments(ZAL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
  110. message("=================================================================")
  111. message("= add_library: ${ZAL_TARGET}")
  112. message("=================================================================")
  113. message("CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}")
  114. message("CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
  115. if(ZAL_TARGET)
  116. message("ADD TARGET:${ZAL_TARGET}")
  117. else()
  118. message(FATAL_ERROR,"ZAL not set target")
  119. endif()
  120. if(ZAL_INSTALL)
  121. message("INSTALL : ${ZAL_INSTALL}")
  122. endif()
  123. if(ZAL_SRC)
  124. # message("SRC: ${ZAL_SRC}")
  125. # message("SRC:")
  126. # foreach(EACH ${ZAL_SRC})
  127. # message(" ${EACH}")
  128. # endforeach(EACH)
  129. else()
  130. message(FATAL_ERROR,"ZAL not set src")
  131. endif()
  132. add_library(${ZAL_TARGET} SHARED ${ZAL_SRC})
  133. if(ZAL_DEFINES)
  134. message("DEFINES:")
  135. foreach(EACH ${ZAL_DEFINES})
  136. message(" ${EACH}")
  137. endforeach(EACH)
  138. target_compile_definitions(${ZAL_TARGET} PRIVATE ${ZAL_DEFINES})
  139. endif()
  140. if(ZAL_DEPENDENCIES)
  141. message("DEPENDENCIES:")
  142. foreach(EACH ${ZAL_DEPENDENCIES})
  143. message(" ${EACH}")
  144. endforeach(EACH)
  145. add_dependencies(${ZAL_TARGET} ${ZAL_DEPENDENCIES})
  146. endif()
  147. if(ZAL_LINK_LIBRARIES)
  148. message("LINK_LIBRARIES:")
  149. foreach(EACH ${ZAL_LINK_LIBRARIES})
  150. message(" ${EACH}")
  151. endforeach(EACH)
  152. target_link_libraries(${ZAL_TARGET} ${ZAL_LINK_LIBRARIES})
  153. endif()
  154. if(ZAL_LINK_DIRECTORIES)
  155. message("LINK_DIRECTORIES:")
  156. foreach(EACH ${ZAL_LINK_DIRECTORIES})
  157. message(" ${EACH}")
  158. endforeach(EACH)
  159. target_link_directories(${ZAL_TARGET} PRIVATE ${ZAL_LINK_DIRECTORIES})
  160. endif()
  161. if(ZAL_INCLUDE_DIRECTORIES)
  162. message("INCLUDE_DIRECTORIES:")
  163. foreach(EACH ${ZAL_INCLUDE_DIRECTORIES})
  164. message(" ${EACH}")
  165. endforeach(EACH)
  166. target_include_directories(${ZAL_TARGET} PRIVATE ${ZAL_INCLUDE_DIRECTORIES})
  167. endif()
  168. if(ZAL_INSTALL)
  169. install(TARGETS ${ZAL_TARGET} DESTINATION ${ZAL_INSTALL})
  170. endif()
  171. message("")
  172. message("")
  173. endfunction(zadd_share_library)