Как связать заголовочные файлы Boost's sub_directory (например, /archive/text_oarchive.hpp)? - PullRequest
0 голосов
/ 14 декабря 2018

Мой вариант использования прост: хранить кучу объектов в файле.тем не менее, я застрял на неделе, пытаясь попробовать разные вещи

Я знаю, что есть много похожих вопросов, поэтому давайте начнем с того, что дадим понять, что у меня нет проблем с компиляцией boost и использованием заголовка filesystem.hpp дляпример (CMakeLists.txt)

cmake_minimum_required(VERSION 3.12)
project(Project2)

set(CMAKE_CXX_STANDARD 14)

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

find_package(Boost 1.68 COMPONENTS filesystem)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(Project2 main.cpp)
target_link_libraries(Project2 PUBLIC ${Boost_LIBRARIES})

Однако я не могу просто заменить файловую систему на нужные мне заголовки, потому что они не находятся в корневом каталоге буста

text_oarchive.hpp

text_iarchive.hpp

это даст мне следующую ошибку No header defined for text_oarchive; skipping header check

Для ясностиКак отредактировать CMakeLists.txt (упомянутый выше), чтобы я мог запустить этот пример (не мой фактический код линии +300)

#include <boost/archive/text_oarchive.hpp>
#include <iostream>

using namespace boost::archive;

int main()
{
    text_oarchive oa{std::cout};
    int i = 1;
    oa << i;

}

Информация:

ОС: LinuxManjaro

IDE: CLion

Boost-версия: 1.68.0-2

Boost-каталог: / usr / include / boost /

1 Ответ

0 голосов
/ 14 декабря 2018

Краткий ответ: вам нужно связать с библиотекой Boost serialization.

Большинство библиотек Boost имеют только заголовки, но некоторые требуют ссылки на соответствующую библиотеку.

См. Увеличить только заголовочные библиотеки , чтобы выяснить, достаточно ли простого include_directories(${Boost_INCLUDE_DIRS}) или нужно ли добавить библиотеку к вашему find_package(Boost COMPONENTS ...) вызову

...