首页 > 解决方案 > 找不到 Boost(缺少:序列化)– cmake 错误

问题描述

我知道这是另一个问题,例如“我的提升在哪里???,但我仍然不清楚......我是 Boost 和 Cmake 的新手。我正在尝试从 Boost 教程(序列化库)构建简单的演示必需)使用此脚本与 Cmake 一起使用:

cmake_minimum_required(VERSION 2.8)
project(serialization)
add_executable(serializer main.cpp)

set(BOOST_ROOT "C:/Dev/Source/boost/boost_1_73_0")
set(BOOST_INCLUDEDIR "C:/Dev/Source/boost/boost_1_73_0")
set(BOOST_LIBRARYDIR "C:/Dev/Source/boost/boost_1_73_0/stage/lib")
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
    
set(Boost_DEBUG 1)

find_package(Boost 1.73.0 REQUIRED COMPONENTS serialization)

if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
    target_link_libraries(serializer ${Boost_LIBRARIES})
endif()

Cmake 输出如下所示:

[build] -- [ C:/Dev/Source/...cmake:1489 ] Boost_USE_STATIC_LIBS = "ON"
...
[build] -- [ C:/Dev/Source/...cmake:1524 ] BOOST_ROOT = "C:/Dev/Source/boost/boost_1_73_0"
[build] -- [ C:/Dev/Source/...cmake:1525 ] ENV{BOOST_ROOT} = <unset>
...
[build] -- [ C:/Dev/Source/...cmake:1526 ] BOOST_INCLUDEDIR = "C:/Dev/Source/boost/boost_1_73_0"
[build] -- [ C:/Dev/Source/...cmake:1526 ] ENV{BOOST_INCLUDEDIR} = <unset>
...
[build] -- [ C:/Dev/Source/...cmake:1528 ] BOOST_LIBRARYDIR = "C:/Dev/Source/boost/boost_1_73_0/stage/lib"
[build] -- [ C:/Dev/Source/...cmake:1529 ] ENV{BOOST_LIBRARYDIR} = <unset>
...
[build] -- [ C:/Dev/Source/...cmake:2045 ] Searching for SERIALIZATION_LIBRARY_RELEASE: libboost_serialization-mgw8-mt-1_73;...;libboost_serialization-mt-s
[build] -- [ C:/Dev/Source/...cmake:2100 ] Searching for SERIALIZATION_LIBRARY_DEBUG: libboost_serialization-mgw8-mt-d-1_73;...;libboost_serialization-mt-s-d
...
[build] CMake Error at C:/Dev/Source/...cmake:164 (message):
[build]   Could NOT find Boost (missing: serialization) (found suitable version
[build]   "1.73.0", minimum required is "1.73.0")

所以看起来 Cmake 可以找到所需的库,但是出了点问题。如果我没有COMPONENTS明确指定,Cmake 会找到 Boost,但构建过程会失败并出现许多undefined reference to boost::...错误。那么有没有办法解决这些问题呢?

标签: c++boostcmake

解决方案


推荐阅读