CMakeLists.txt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. cmake_minimum_required(VERSION 3.5)
  2. set(MODULE_NAME "mysql")
  3. # 设置项目名为当前目录名
  4. project(${MODULE_NAME})
  5. # 搜索源文件和头文件
  6. file(GLOB_RECURSE SOURCE_FILES "${PROJECT_SOURCE_DIR}/src/*.cpp")
  7. file(GLOB_RECURSE HEADER_FILES
  8. "${PROJECT_SOURCE_DIR}/src/*.h"
  9. )
  10. # 将源文件分配到 Source Files 文件夹
  11. foreach(source IN LISTS SOURCE_FILES)
  12. get_filename_component(source_path "${source}" PATH)
  13. file(RELATIVE_PATH source_path_rel "${PROJECT_SOURCE_DIR}" "${source_path}")
  14. string(REPLACE "/" "\\" source_path_rel_win "${source_path_rel}")
  15. source_group("Source Files\\${source_path_rel_win}" FILES "${source}")
  16. endforeach()
  17. # 将头文件分配到 Header Files 文件夹
  18. foreach(header IN LISTS HEADER_FILES)
  19. get_filename_component(header_path "${header}" PATH)
  20. file(RELATIVE_PATH header_path_rel "${PROJECT_SOURCE_DIR}" "${header_path}")
  21. string(REPLACE "/" "\\" header_path_rel_win "${header_path_rel}")
  22. source_group("Header Files\\${header_path_rel_win}" FILES "${header}")
  23. endforeach()
  24. set(CMAKE_CXX_STANDARD 20)
  25. set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
  26. # 安装复制
  27. set(CMAKE_INSTALL_ALWAYS_COPY TRUE)
  28. if(MSVC)
  29. set(YLIB ${CMAKE_INSTALL_PREFIX}/../ylib)
  30. set(FASTWEB ${CMAKE_INSTALL_PREFIX}/../fastweb)
  31. else()
  32. set(YLIB /usr/local/include/ylib)
  33. set(FASTWEB /usr/local/include/fastweb)
  34. endif()
  35. # 包含路径
  36. if(MSVC)
  37. include_directories(
  38. ${YLIB}/include
  39. ${FASTWEB}/include
  40. ${FASTWEB}/include/lua
  41. )
  42. add_definitions(/bigobj)
  43. set(MYSQL_CPP_LIB_DIR "$ENV{USERPROFILE}/MySQL/MySQL Connector C++ 8.2.0/lib64")
  44. else()
  45. include_directories(
  46. /usr/local/include/ylib
  47. /usr/local/include/fastweb
  48. /opt/lua54/include
  49. /usr/local/include)
  50. add_definitions(-DfPIC)
  51. endif()
  52. # 添加共享库
  53. add_library(${MODULE_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES})
  54. if(MSVC)
  55. target_link_libraries(${MODULE_NAME} PRIVATE
  56. odbc32.lib
  57. User32.lib
  58. Advapi32.lib
  59. IPHLPAPI.lib
  60. WS2_32.lib
  61. Shell32.lib
  62. ${YLIB}/lib/libcrypto_static_win64.lib
  63. $<$<CONFIG:Debug>:${FASTWEB}/bin/debug/3rdparty/lib/lua.lib>
  64. $<$<CONFIG:Debug>:>
  65. $<$<CONFIG:Debug>:${YLIB}/lib/ylib_d.lib>
  66. $<$<CONFIG:Debug>:${MYSQL_CPP_LIB_DIR}/vs14/debug/mysqlcppconn.lib>
  67. $<$<CONFIG:Release>:${FASTWEB}/bin/release/3rdparty/lib/lua.lib>
  68. $<$<CONFIG:Release>:${YLIB}/lib/ylib.lib>
  69. $<$<CONFIG:Release>:${MYSQL_CPP_LIB_DIR}/vs14/mysqlcppconn.lib>
  70. )
  71. else()
  72. target_link_libraries(${MODULE_NAME}
  73. hpsocket
  74. ylib
  75. crypto
  76. /opt/lua54/lib/liblua.a
  77. mysqlcppconn
  78. pthread
  79. )
  80. endif()
  81. install(TARGETS ${MODULE_NAME} DESTINATION $<IF:$<CONFIG:Debug>,${FASTWEB}/bin/debug/module/${MODULE_NAME},${FASTWEB}/bin/release/module/${MODULE_NAME}>)