CMakeLists.txt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. if(WIN32)
  2. if(DEFINED ENV{BOOST_ROOT})
  3. set(BOOST_ROOT $ENV{BOOST_ROOT})
  4. endif()
  5. set(Boost_USE_STATIC_LIBS ON)
  6. set(Boost_USE_MULTITHREADED ON)
  7. set(Boost_USE_STATIC_RUNTIME OFF)
  8. endif()
  9. set(Boost_NO_WARN_NEW_VERSIONS ON)
  10. set(BOOST_REQUIRED_VERSION 1.87)
  11. find_package(Boost ${BOOST_REQUIRED_VERSION} REQUIRED COMPONENTS
  12. system
  13. filesystem
  14. program_options
  15. iostreams
  16. regex
  17. random
  18. )
  19. if(NOT Boost_FOUND)
  20. message(FATAL_ERROR "Boost not found! 请确认 BOOST_ROOT 环境变量是否正确设置。")
  21. endif()
  22. # 创建一个 INTERFACE 库,封装 Boost 相关设置
  23. add_library(boost INTERFACE)
  24. # 使用 Boost 的 imported targets 链接各个组件,
  25. # 这样其它目标在链接 boost 时会自动获得对应组件库的链接信息
  26. target_link_libraries(boost
  27. INTERFACE
  28. ${Boost_LIBRARIES}
  29. )
  30. # 指定 Boost 的包含目录
  31. target_include_directories(boost
  32. INTERFACE
  33. ${Boost_INCLUDE_DIRS}
  34. )
  35. # 定义一些编译选项,避免自动链接某些库
  36. target_compile_definitions(boost
  37. INTERFACE
  38. -DBOOST_DATE_TIME_NO_LIB
  39. -DBOOST_REGEX_NO_LIB
  40. -DBOOST_CHRONO_NO_LIB
  41. -DBOOST_SERIALIZATION_NO_LIB
  42. -DBOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE
  43. -DBOOST_ASIO_NO_DEPRECATED
  44. -DBOOST_SYSTEM_USE_UTF8
  45. -DBOOST_BIND_NO_PLACEHOLDERS
  46. )