cmake - 如何链接Boost的sub_directory头文件(例如:/archive/text_oarchive.hpp)?

问题描述 投票:0回答:1

我的用例很简单:在文件中存储一堆对象。然而,我已经被困了一个星期尝试不同的东西

我知道有很多类似的问题所以让我们首先明确表示我没有问题编译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})

但是,我不能简单地用我需要的头文件替换文件系统,因为它们不在boost的根目录中

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;

}

信息:

操作系统:Linux Manjaro

是:克莱恩

提升版:1.68.0-2

提升目录:/ usr / include / boost /

c++ serialization boost cmake
1个回答
0
投票

简短的回答:你需要链接serialization库的boost。

大多数Boost库只是标题库,但有些库要求您链接到相应的库。

请参阅Boost header only libraries,了解简单的include_directories(${Boost_INCLUDE_DIRS})是否足够,或者是否需要将库添加到find_package(Boost COMPONENTS ...)调用中

© www.soinside.com 2019 - 2024. All rights reserved.