# Make sure to use the module mode signature here to not bypass FindBoost
find_package(Boost 1.60 COMPONENTS timer MODULE)
if(Boost_FOUND)
  message(STATUS "Boost_FOUND")
endif()
message(STATUS "Boost_VERSION=${Boost_VERSION}")
message(STATUS "Boost_VERSION_MAJOR=${Boost_VERSION_MAJOR}")
message(STATUS "Boost_VERSION_MINOR=${Boost_VERSION_MINOR}")
message(STATUS "Boost_VERSION_PATCH=${Boost_VERSION_PATCH}")
message(STATUS "Boost_VERSION_COUNT=${Boost_VERSION_COUNT}")
if(TARGET Boost::headers)
  message(STATUS "Boost::headers")
endif()
if(TARGET Boost::boost)
  message(STATUS "Boost::boost")
endif()
if(TARGET Boost::chrono)
  message(STATUS "Boost::chrono")
endif()
if(TARGET Boost::timer)
  message(STATUS "Boost::timer")
endif()
if(TARGET Boost::system)
  message(STATUS "Boost::system")
endif()
