Я пытаюсь интегрировать spdlog, библиотеку журналов только для заголовков, в проект C ++, но у меня возникают проблемы с тем, чтобы CMake правильно распознал пути включения.Я использую последний CLion с CMake 3.10.2 в Ubuntu 18.04.
Структура моего проекта выглядит следующим образом:
Project Dir
|- libs
| |- spdlog #this is the include directory taken straight from GitHub
|
|- src
| |-...
|- CMakeLists.txt
В файле CMakeLists.txt
я определяю каталог include:
include_directories("libs/")
Теперь, когда я пытаюсь записать #include <spdlog/spdlog.h>
в файл заголовка, расположенный в src/
, CLion жалуется, что не может найти spdlog.h
, даже если я проверил, и файл определенно находится в папке spdlog
.Использование кавычек вместо угловых скобок в операторе включения не решает проблему, однако использование пути относительно файла (например, ../libs/spdlog/spdlog.h
) работает должным образом.Что меня больше смущает, так это то, что в исходном файле, соответствующем заголовку, я могу включить файл без проблем.
Мне не удалось найти что-либо подобное этому, и я изо всех сил пытаюсь понять,что приводит к тому, что CMake или CLion ведут себя так.
РЕДАКТИРОВАТЬ: В соответствии с предложением Матье Брухера я попытался использовать полные пути к папке include, но он все еще не работает.Кажется, проблема в том, что папки, похоже, не распознаются в заголовках, так как они работают в исходных файлах.
EDIT2: Вот весь CMakeLists.txt
, который я использую.Он вложен в каталог, отличный от верхнего уровня CMakeLists.txt
для всего проекта, поскольку это было единственное решение, которое я нашел в Интернете, чтобы получить что-то похожее на несколько проектов VS в решении на CLion.Однако, поскольку все пути относительно, я не думаю, что это будет проблемой.Я также знаю, что spdlog - это библиотека C ++ 11, но в ближайшем будущем мне понадобятся некоторые функции C ++ 14.
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
project(TokenEngine VERSION 0.0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 14)
set(SOURCE_FILES src/Application.cpp src/Application.hpp src/EntryPoint.hpp src/Logger.cpp src/Logger.hpp)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/libs/")
add_library(TokenEngine SHARED ${SOURCE_FILES})
#Expose the public API of the engine to any project that might use it
target_include_directories(TokenEngine PUBLIC include)
EDIT3: при попытке воссоздать ошибку, чтобы отобразить полную версиюсообщение, данное каким-то образом, исчезло, его заменили другим, совершенно не связанным с CMake ...