我的用例很简单:将一堆对象存储在一个文件中。但是,我被困了一个星期尝试其他东西
我知道有很多类似的问题,所以让我们首先清楚地说明我在编译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
IDE:CLion
增强版本:1.68.0-2
Boost目录:/ usr / include / boost /
答案 0 :(得分:0)
简短的回答:您需要链接到serialization
Boost的库中。
大多数Boost库只是标头,但有一些要求您链接到相应的库。
请参见Boost header only libraries,以了解简单的include_directories(${Boost_INCLUDE_DIRS})
是否足够?
需要将库添加到您的find_package(Boost COMPONENTS ...)
通话