gpt4 book ai didi

c++ - (C++17; Boost) CMake 找不到请求的 Boost 库

转载 作者:行者123 更新时间:2023-12-02 10:18:17 25 4
gpt4 key购买 nike

我是 C++ 新手,想在我的项目中包含 boost 库(特别是需要构建的文件系统部分)。我尝试了其他 stackoverflow 用户的许多解决方案,但他们根本没有帮助我。我正在将 CLion 与 CMake 一起使用。
main.cpp 正在调用 modules/文件夹中的其他 .cpp 文件。

文件结构:

ProjectName
>boost
>lots of folders and .hpp files
>cmake-build-debug
>modules
encryption.cpp
encryption.h
output.cpp
output.h
CMakeLists.txt
main.cpp

下载并解压缩时,boost 文件夹不包含整个 boost。我在我的项目中将 boost_1_72_0 中的 boost 文件夹拖到了里面(只是为了让你知道里面没有 libs 文件夹等)

CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(ProjectName)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc")

set(SOURCE_FILES
main.cpp
modules/encryption.cpp modules/encryption.h modules/output.cpp modules/output.h
)

set(Boost_ARCHITECTURE -x64)
set(BOOST_ROOT boost/)
set(Boost_INCLUDE_DIRS boost/filesystem)
find_package(Boost COMPONENTS system filesystem REQUIRED)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
endif()

add_executable(ProjectName ${SOURCE_FILES})
target_link_libraries(ProjectName ${Boost_LIBRARIES})

输出.cpp
// some includes //
#define BOOST_FILESYSTEM_NO_DEPRECATED

#include "../boost/filesystem.hpp"

// some code //

错误消息:
CMake Error at C:/Program Files/JetBrains/CLion 2019.1.4/bin/cmake/win/share/cmake-3.14/Modules/FindBoost.cmake:2147 (message):
Unable to find the requested Boost libraries.

Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing
Boost's headers.
Call Stack (most recent call first):
CMakeLists.txt:15 (find_package)


-- Configuring incomplete, errors occurred!
See also "C:/Users/username/Desktop/C++/ProjectName/cmake-build-debug/CMakeFiles/CMakeOutput.log".
mingw32-make.exe: *** [cmake_check_build_system] Error 1
Makefile:235: recipe for target 'cmake_check_build_system' failed

我知道它基本上告诉我我必须做什么,但我不知道 boost 的“根目录”、“包含 Boost 的 header ”的目录以及如何将所有内容放在一起的确切含义。

提前谢谢了!

最佳答案

I dragged the boost folder inside of boost_1_72_0 in my project



看起来您刚刚将 boost 源复制到您的项目目录中。
您必须 compile boost ,因为你需要文件系统。或者您可以从以下方面获得 boost :
  • vcpkg - 这对你来说是最简单的方法。我强烈推荐这种方式。
  • Sourceforge .
  • Conan

  • I don't know what's exactly meant by the "root directory"...



    由于您使用的是 boost调用 find_package(Boost) - CMake 使用 FindBoost模块。它将尝试在系统 PATH 中找到您的 boost 安装。变量或其他一些“标准”的地方。您的 boost “安装”并不常见,因此您必须使用 BOOST_ROOT 变量指定 boost 的位置。 set(BOOST_ROOT boost/)这样做是不正确的。您必须指定绝对路径,如 set(BOOST_ROOT "C:/lib/boost/boost17.2")或相对于当前 CMakeList.txt - set(BOOST_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/boost} .

    安装正确的 boost 您所要做的就是:
        find_package(Boost REQUIRED [COMPONENTS <libs>...])
    target_link_libraries(main PRIVATE ${Boost_LIBRARIES})
    target_include_directories(main PRIVATE ${Boost_INCLUDE_DIRS})

    关于c++ - (C++17; Boost) CMake 找不到请求的 Boost 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61175465/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com