gpt4 book ai didi

c++ - 无法编译 boost::logger

转载 作者:行者123 更新时间:2023-11-28 01:29:35 25 4
gpt4 key购买 nike

我正在努力让一些 boost::logging 演示应用程序运行。我有以下内容:logger.cpp:

#include <iostream>
#include <boost/fusion/iterator/equal_to.hpp>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/utility/setup/file.hpp>

namespace logging = boost::log;
namespace src = boost::log::sources;
namespace sinks = boost::log::sinks;
namespace keywords = boost::log::keywords;
namespace expr = boost::log::expressions;


void init()
{
logging::add_file_log("sample.log");

logging::core::get()->set_filter
(
logging::trivial::severity >= logging::trivial::info
);
}

int main(void) {
init();

std::cout <<"Hello World!";

CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)
project(LOGGER)

set(BOOST_INCLUDEDIR "/path/to/env/include")
set(BOOST_ROOT "/path/to/env/include")

find_package(Boost REQUIRED)

message(STATUS Boost_LIBRARIES:)
message (STATUS ${Boost_LIBRARIES})
message(STATUS BOOST_INCLUDEDIR:)
message(STATUS ${BOOST_INCLUDEDIR})

ADD_EXECUTABLE(logger logger.cpp)
target_include_directories(logger PUBLIC ${BOOST_INCLUDEDIR})

target_link_libraries(logger Boost::boost ${Boost_LIBRARIES})

set (CMAKE_CXX_FLAGS "-g -Wall")

make 上我得到了这个:

$ make
Scanning dependencies of target logger
[ 50%] Building CXX object CMakeFiles/logger.dir/logger.cpp.o
[100%] Linking CXX executable logger
/usr/bin/ld: cannot find -lBoost::boost
collect2: error: ld returned 1 exit status
CMakeFiles/logger.dir/build.make:94: recipe for target 'logger' failed
make[2]: *** [logger] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/logger.dir/all' failed
make[1]: *** [CMakeFiles/logger.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

我不明白为什么!我错过了什么或做错了什么?

最佳答案

第一个问题是因为您没有包含正确的头文件。对于 add_file_log <boost/log/utility/setup/file.hpp>需要头文件。

第二个问题(其实应该是第二个问题,没有人喜欢移动的靶子),如果你看the FindBoost reference你会看到的

Boost::boost                Target for header-only dependencies
(Boost include directory)

那不是您需要链接的库。从 target_link_libraries 中删除它命令。

关于c++ - 无法编译 boost::logger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52204784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com