CMakeLists.txt 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. cmake_minimum_required(VERSION 3.16)
  2. project(ngs LANGUAGES CXX)
  3. set(CMAKE_CXX_STANDARD 17)
  4. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  5. set(CMAKE_CXX_EXTENSIONS OFF)
  6. add_definitions(-DHPSOCKET_STATIC_LIB)
  7. add_executable(ngs
  8. src/main.cpp
  9. src/utils.cpp
  10. src/api/api_server.cpp
  11. src/store/store.cpp
  12. src/system/metrics.cpp
  13. src/system/metrics_history.cpp
  14. src/files/files.cpp
  15. src/tasks/tasks.cpp
  16. src/software/software.cpp
  17. src/software/nginx/nginx.cpp
  18. src/software/fastweb/fastweb.cpp
  19. src/software/mysql/mysql.cpp
  20. src/software/redis/redis.cpp
  21. src/website/website.cpp
  22. src/ssl/acme.cpp
  23. src/auth/auth.cpp
  24. src/weblog/weblog.cpp
  25. )
  26. target_include_directories(ngs PRIVATE
  27. ${CMAKE_CURRENT_SOURCE_DIR}/src
  28. /usr/local/include
  29. )
  30. target_compile_options(ngs PRIVATE -Wall -Wextra)
  31. target_compile_definitions(ngs PRIVATE NGS_SOURCE_DIR="${CMAKE_SOURCE_DIR}")
  32. link_directories(/usr/local/lib /usr/lib/x86_64-linux-gnu)
  33. target_link_libraries(ngs PRIVATE
  34. ylib
  35. mysqlcppconn
  36. mysqlclient
  37. hpsocket
  38. leveldb
  39. sqlite3
  40. ssl
  41. crypto
  42. z
  43. pthread
  44. dl
  45. rt
  46. stdc++fs
  47. )
  48. install(TARGETS ngs RUNTIME DESTINATION bin)
  49. add_custom_target(install-deps
  50. COMMAND sudo apt-get update
  51. COMMAND sudo DEBIAN_FRONTEND=noninteractive apt-get install -y
  52. build-essential cmake pkg-config
  53. libpcre3-dev zlib1g-dev libssl-dev libsqlite3-dev
  54. libleveldb-dev libmysqlcppconn-dev libmysqlclient-dev
  55. curl tar
  56. COMMENT "Install apt build dependencies (ylib and HPSocket must be preinstalled)"
  57. VERBATIM
  58. )