Skip to content

Instantly share code, notes, and snippets.

@simogasp
Last active November 2, 2016 18:14
Show Gist options
  • Save simogasp/996d15b32918cb8c7ca2b662dafd4629 to your computer and use it in GitHub Desktop.
Save simogasp/996d15b32918cb8c7ca2b662dafd4629 to your computer and use it in GitHub Desktop.
how to choose the logger

in Cmake

OPTION(OpenMVG_USE_LOG "Enable logger" ON)

# a variable to set the type of logger to use
set(OpenMVG_LOGGER "LOG_COUT" CACHE STRING "The logger to use for openMVG"))
set(LOGGERS_Values "LOG_COUT;LOG_BOOST;LOG_GLOG" CACHE INTERNAL "List of possible values for the OpenMVG_LOGGER cache variable”)
set_property(CACHE OpenMVG_LOGGER PROPERTY STRINGS ${LOGGERS_Values})
...

IF(OpenMVG_USE_BOOST)
  if(OpenMVG_LOGGER STREQUAL "LOG_BOOST")
    FIND_PACKAGE(Boost 1.53.0 QUIET COMPONENTS system filesystem program_options thread serialization log log_setup)
  else()
    FIND_PACKAGE(Boost 1.53.0 QUIET COMPONENTS system filesystem program_options thread serialization)
  endif()
  #maybe we can switch to REQUIRED, at least the user see that something is wrong...
  IF(Boost_FOUND)
    .. 
  else()
    #fallback to cout
    set(OpenMVG_LOGGER "cout")
    ..
  endif()
endif()

#the same for GLog
if(OpenMVG_LOGGER STREQUAL "LOG_GLOG")
  find_package(Glog REQUIRED)
  ...
endif()

IF(OpenMVG_USE_LOG)
  ADD_DEFINITIONS(-DWANTS_OPENMVG_COUT)
  ADD_DEFINITIONS(-D${OpenMVG_LOGGER})
ENDIF()

Apres dans le logger.h

#ifdef WANTS_OPENMVG_COUT
  #ifdef LOG_BOOST
    #define BOOST_LOG_DYN_LINK 1
    #include <boost/log/trivial.hpp>

    #define OPENMVG_LOG_TRACE_OBJ BOOST_LOG_TRIVIAL(trace)
    ...
    
  #elif defined(LOG_GLOG)
    #include <glog.hpp>
    #define OPENMVG_LOG_TRACE_OBJ GLOG_LOG_TRIVIAL(trace)
    ...
  #else //cout
    #define OPENMVG_LOG_TRACE_OBJ std::cout
    ...
  #endif
  #define OPENMVG_LOG(MODE, ...) MODE << __VA_ARGS__
#else
  #define OPENMVG_LOG_TRACE_OBJ std::stringstream
  ...
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment