c++ - ошибка Boost.Log с пространствами имен

Попытка собрать следующую программу, использующую Boost::library и пытающуюся создать новый регистратор:

#include <string>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>

class TestClass
{    
     ...        
     boost::log::sources::logger lg;
};

Мой файл Cmake для создания этого файла:

set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)

find_package(Boost 1.63.0
             COMPONENTS system
                        filesystem
                        log
                        log_setup
                        thread
                        unit_test_framework
             REQUIRED)

include_directories(SYSTEM ${Boost_INCLUDE_DIRS})

file(GLOB PROJECT_SOURCES sources/*.cpp
                          sources/configuration/*.cpp)
file(GLOB PROJECT_HEADERS sources/*.h
                          sources/configuration/*.h)

add_executable(${PROJECT_NAME}
               ${PROJECT_SOURCES}
               ${PROJECT_HEADERS})
target_link_libraries(${PROJECT_NAME}
                      ${Boost_LIBRARIES}
                      Boost::log)

Но при линковке получаю следующую ошибку:

error: 'logger' in namespace 'boost::log::v2_mt_nt5::sources' does not name a type
         boost::log::sources::logger log;

Почему мое пространство имен boost::log::sources преобразуется в boost::log::v2_mt_nt5::sources? Как решить эту проблему?


person Serbin    schedule 01.05.2017    source источник
comment
это работает с Boost::log внутри target_link_libraries? Я получаю сообщение об ошибке, что он не может найти Boost::log.lib   -  person Verena Haunschmid    schedule 11.07.2017


Ответы (1)


Вам просто не хватает директивы include:

#include <boost/log/sources/logger.hpp>
person oLen    schedule 01.05.2017
comment
Конечно. Теперь это работает. Тот же файл отсутствует в примере повышения. - person Serbin; 01.05.2017