Я пытаюсь использовать spdlog в моем проекте. В соответствии с документ spdlog, Мне просто нужно скопировать файлы в папку include и использовать компилятор C ++ 11.
Я скопировал папку / include / spdlog в корневую папку своего проекта, но у меня возникло много ошибок после попытки сборки проекта. Некоторые из них:
/home/project/Documents/project-server/spdlog/spdlog.h:46:39: error: variable or field ‘set_error_handler’ declared void
void set_error_handler(log_err_handler);
^
/home/project/Documents/project-server/spdlog/spdlog.h:46:24: error: ‘log_err_handler’ was not declared in this scope
void set_error_handler(log_err_handler);
^
In file included from /home/project/Documents/project-server/main.cpp:13:0:
/home/project/Documents/project-server/spdlog/spdlog.h:74:79: error: ‘filename_t’ does not name a type
std::shared_ptr<logger> basic_logger_mt(const std::string& logger_name, const filename_t& filename, bool truncate = false);
^
/home/project/Documents/project-server/spdlog/spdlog.h:75:79: error: ‘filename_t’ does not name a type
std::shared_ptr<logger> basic_logger_st(const std::string& logger_name, const filename_t& filename, bool truncate = false);
^
/home/project/Documents/project-server/spdlog/spdlog.h:80:82: error: ‘filename_t’ does not name a type
std::shared_ptr<logger> rotating_logger_mt(const std::string& logger_name, const filename_t& filename, size_t max_file_size, size_t max_files);
Я попытался добавить следующее в CMakeLists.txt
target_include_directories(ProjectName INTERFACE spdlog)
include_directories(spdlog)
target_link_libraries(ProjectName .... -libspdlog-dev)
(Я установил libspdlog-dev)
add_subdirectory(spdlog)
но ничего из вышеперечисленного не работает. Кто-нибудь знает, как я могу это исправить? Большое спасибо!
Как написано в spdlogs document в самом низу, ты можешь сделать
find_package(spdlog CONFIG)
Это предоставляет вам импортированную интерфейсную библиотеку spdlog::spdlog
, который вы можете использовать
target_link_library(my_library PUBLIC spdlog::spdlog)
(как видно из spdlog / примеры / CMakeLists.txt)
Решением было установить spdlog:
sudo apt-get install libspdlog-dev
и включают использование:
#include <spglog/spdlog.h>
Сначала я просто скопировал spdlog в корень проекта и пытался включить с помощью:
#include "spdlog/spdlog.h"