CMakeLists.txt 2.6 KB

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