cmake - 如何链接Boost的sub_directory头文件(例如:/archive/text_oarchive.hpp)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake - 如何链接Boost的sub_directory头文件(例如:/archive/text_oarchive.hpp)?相关的知识,希望对你有一定的参考价值。
我的用例很简单:在文件中存储一堆对象。然而,我已经被困了一个星期尝试不同的东西
我知道有很多类似的问题所以让我们首先明确表示我没有问题编译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 /
简短的回答:你需要链接serialization
库的boost。
大多数Boost库只是标题库,但有些库要求您链接到相应的库。
请参阅Boost header only libraries,了解简单的include_directories(${Boost_INCLUDE_DIRS})
是否足够,或者是否需要将库添加到find_package(Boost COMPONENTS ...)
调用中
以上是关于cmake - 如何链接Boost的sub_directory头文件(例如:/archive/text_oarchive.hpp)?的主要内容,如果未能解决你的问题,请参考以下文章
cmake - 如何可能链接 Boost 的 sub_directory 头文件(例如:/archive/text_oarchive.hpp)?