CMakeLists.txt 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # 获取当前目录的名称
  2. get_filename_component(MODULE_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
  3. # 设置项目名为当前目录名
  4. project(${MODULE_NAME})
  5. # 搜索源文件和头文件
  6. file(GLOB_RECURSE SOURCE_FILES "${PROJECT_SOURCE_DIR}/*.cpp")
  7. file(GLOB_RECURSE HEADER_FILES
  8. "${PROJECT_SOURCE_DIR}/*.h"
  9. "../*.h"
  10. )
  11. # 将源文件分配到 Source Files 文件夹
  12. foreach(source IN LISTS SOURCE_FILES)
  13. get_filename_component(source_path "${source}" PATH)
  14. file(RELATIVE_PATH source_path_rel "${PROJECT_SOURCE_DIR}" "${source_path}")
  15. string(REPLACE "/" "\\" source_path_rel_win "${source_path_rel}")
  16. source_group("Source Files\\${source_path_rel_win}" FILES "${source}")
  17. endforeach()
  18. # 将头文件分配到 Header Files 文件夹
  19. foreach(header IN LISTS HEADER_FILES)
  20. get_filename_component(header_path "${header}" PATH)
  21. file(RELATIVE_PATH header_path_rel "${PROJECT_SOURCE_DIR}" "${header_path}")
  22. string(REPLACE "/" "\\" header_path_rel_win "${header_path_rel}")
  23. source_group("Header Files\\${header_path_rel_win}" FILES "${header}")
  24. endforeach()
  25. include_directories(${ROOT_DIR}/module)
  26. include_directories(${ROOT_DIR}/3rdpary)
  27. # 添加共享库
  28. add_library(${MODULE_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES})
  29. if(MSVC)
  30. target_link_libraries(${MODULE_NAME} PRIVATE
  31. odbc32.lib
  32. User32.lib
  33. Advapi32.lib
  34. IPHLPAPI.lib
  35. WS2_32.lib
  36. Shell32.lib
  37. lualib
  38. ${YLIB}/lib/libcrypto_static_win64.lib
  39. $<$<CONFIG:Debug>:${ROOT_DIR}/3rdparty/HP-Socket/Lib/HPSocket_D.lib>
  40. $<$<CONFIG:Debug>:${ROOT_DIR}/3rdparty/mysql/lib/Debug/mysqlcppconn.lib>
  41. $<$<CONFIG:Debug>:${YLIB}/lib/leveldb_d.lib>
  42. $<$<CONFIG:Debug>:${YLIB}/lib/libzip_d.lib>
  43. $<$<CONFIG:Debug>:${YLIB}/lib/sqlite3_d.lib>
  44. $<$<CONFIG:Debug>:${YLIB}/lib/ylib_d.lib>
  45. $<$<CONFIG:Debug>:${YLIB}/lib/zlib_d.lib>
  46. $<$<CONFIG:Debug>:${ROOT_DIR}/3rdparty/soci/lib/Debug/libsoci_core_4_1.lib>
  47. $<$<CONFIG:Debug>:${ROOT_DIR}/3rdparty/soci/lib/Debug/libsoci_empty_4_1.lib>
  48. $<$<CONFIG:Debug>:${ROOT_DIR}/3rdparty/soci/lib/Debug/libsoci_odbc_4_1.lib>
  49. $<$<CONFIG:Debug>:${ROOT_DIR}/3rdparty/soci/lib/Debug/soci_core_4_1.lib>
  50. $<$<CONFIG:Debug>:${ROOT_DIR}/3rdparty/soci/lib/Debug/soci_empty_4_1.lib>
  51. $<$<CONFIG:Debug>:${ROOT_DIR}/3rdparty/soci/lib/Debug/soci_odbc_4_1.lib>
  52. $<$<CONFIG:Release>:${ROOT_DIR}/3rdparty/HP-Socket/Lib/HPSocket.lib>
  53. $<$<CONFIG:Release>:${ROOT_DIR}/3rdparty/mysql/lib/Release/mysqlcppconn.lib>
  54. $<$<CONFIG:Release>:${YLIB}/lib/leveldb.lib>
  55. $<$<CONFIG:Release>:${YLIB}/lib/libzip.lib>
  56. $<$<CONFIG:Release>:${YLIB}/lib/sqlite3.lib>
  57. $<$<CONFIG:Release>:${YLIB}/lib/ylib.lib>
  58. $<$<CONFIG:Release>:${YLIB}/lib/zlib.lib>
  59. $<$<CONFIG:Release>:${ROOT_DIR}/3rdparty/soci/lib/Release/libsoci_core_4_1.lib>
  60. $<$<CONFIG:Release>:${ROOT_DIR}/3rdparty/soci/lib/Release/libsoci_empty_4_1.lib>
  61. $<$<CONFIG:Release>:${ROOT_DIR}/3rdparty/soci/lib/Release/libsoci_odbc_4_1.lib>
  62. $<$<CONFIG:Release>:${ROOT_DIR}/3rdparty/soci/lib/Release/soci_core_4_1.lib>
  63. $<$<CONFIG:Release>:${ROOT_DIR}/3rdparty/soci/lib/Release/soci_empty_4_1.lib>
  64. $<$<CONFIG:Release>:${ROOT_DIR}/3rdparty/soci/lib/Release/soci_odbc_4_1.lib>
  65. )
  66. else()
  67. target_link_libraries(${MODULE_NAME}
  68. hpsocket
  69. ylib
  70. leveldb
  71. soci_core
  72. soci_firebird
  73. soci_mysql
  74. soci_odbc
  75. soci_postgresql
  76. soci_sqlite3
  77. crypto
  78. lua5.3
  79. mysqlcppconn
  80. pthread
  81. )
  82. endif()
  83. # 设置生成的项目文件夹为 module
  84. set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "module")
  85. install(TARGETS ${MODULE_NAME} DESTINATION $<IF:$<CONFIG:Debug>,bin/debug/module,bin/release/module>)