Как использовать spdlog’а

#c #clion #spdlog

#c #clion #spdlog’а

Вопрос:

Я новичок в c , пожалуйста, не придавайте слишком большого значения. Я пытаюсь использовать spdlog’ов в программе на C и использую CLion от Jetbrains.

Вот мой скриншот, но я не знаю, что я делаю не так. Пожалуйста, сообщите, что я делаю неправильно.

Это мой main.cpp

 #include <iostream>
#include "include/spdlog/spdlog.h"


int main() {
    std::cout << "Hello, World!" << std::endl;
    spdlog::info("hello world");
    return 0;
}
  

Это мой CMakeList.txt

 cmake_minimum_required(VERSION 3.17) project(Lesson01)

set(CMAKE_CXX_STANDARD 14)

add_executable(Lesson01 main.cpp) include_directories(spdlog)
  

введите описание изображения здесь

Спасибо

Комментарии:

1. Пожалуйста, публикуйте код в виде текста, а не изображения

2. Ошибка довольно очевидна. вы неправильно настроили путь включения. Для CLion вы можете сделать это в своем CMakeLists.txt вероятно, со стандартным find_package() … это вы делаете для любой сторонней библиотеки.

3. Здесь есть пример скрипта для speedlog: https://github.com/twanas/spdlog-cmake/blob/master/CMakeLists.txt ваш CMakeLists.txt пропустил find_package(spdlog) и target_link_libraries(lesson1 spdlog)

4. @drescherjm, я попробовал ваш подход, вот как мой CMakeLists.txt выглядит как cmake_minimum_required (ВЕРСИЯ 3.17) project (Урок 01) set(CMAKE_CXX_STANDARD 14) find_package(spdlog’ов) add_executable (Урок 01 main.cpp ) target_link_libraries (урок 1 spdlog’а)

5. @drescherjm, теперь получаю это предупреждение CMake об ошибке в CMakeLists.txt:7 (find_package): не указав «Findspdlog.cmake» в CMAKE_MODULE_PATH, этот проект попросил CMake найти файл конфигурации пакета, предоставленный «spdlog», но CMake его не нашел. Не удалось найти файл конфигурации пакета, предоставленный «spdlog’ом», с любым из следующих имен: spdlogConfig.cmake spdlogconfig.cmake

Ответ №1:

В созданном вами прототипе вы дважды упомянули ключевое слово include, первое после # и второе между кавычками.

Я искал в Интернете и базовое написание прототипа spdlog’ов просто. Вот ссылка:https://github.com/gabime/spdlog

#включить «spdlog’а/spdlog.h»

Тест выполняется без второго включения в ваш код.

Всего наилучшего

Матье

Комментарии:

1. Дорогой Матье, я попробовал ваше предложение, но при получении этой ошибки файл «spdlog / spdlog.h» не найден.

Ответ №2:

В вашем коде, который у вас есть #include "include/spdlog/spdlog.h" , и, судя по скриншоту, на который вы ссылаетесь, это включение найдено. Однако затем он жалуется, что spdlog.h пытается #include <spdlog/common.h> , и этот файл не найден.

В совокупности это звучит так, как будто вы не устанавливаете правильный каталог include для библиотеки, а просто получаете правильный первый файл, переопределяя путь.

Я бы попытался изменить include_directories(spdlog) на include_directories(include) (или, возможно include_directories(include/spdlog) , не совсем уверен, какая папка является базовой с библиотекой). Если вы хотите, то вы также можете добавить все это; Я не думаю, что что-то сломается от добавления слишком большого количества здесь, но это может повлиять на скорость компиляции, поэтому постарайтесь сохранить только правильный.

Кроме того, после внесения этого изменения вам может потребоваться изменить исходное включение с #include "include/spdlog/spdlog.h" на #include "spdlog/spdlog.h" .

Комментарии:

1. не бейл, чтобы заставить это работать. Я обновил код и скриншот