如何解决文件系统错误的CLion问题?

我使用CLion作为我的IDE。我用C ++ 17标准创建项目。 我下面有一个代码片段:

#include <filesystem>
namespace fs = std::filesystem;

std::vector<std::string> getFilesArray() {

    auto dir = ".";
    std::vector<std::string> filesList;
    for (auto item : fs::recursive_directory_iterator(dir))
    {
        if (!fs::is_regular_file(item.path()) || item.path().extension() != ".cpp" && item.path().extension() != ".h" && item.path().extension() != ".hpp")
            continue;
        filesList.push_back(item.path().string());
    }

    return filesList;
}

当我尝试编译项目时,我遇到很多错误,例如:

C:/PROGRA~2/MINGW-~1/I686-8~1.0-P/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/bits/fs_path.h: In member function 'std::filesystem::__cxx11::path& std::filesystem::__cxx11::path::operator/=(const std::filesystem::__cxx11::path&)':
C:/PROGRA~2/MINGW-~1/I686-8~1.0-P/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/bits/fs_path.h:237:47: error: no match for 'operator!=' (operand types are 'std::filesystem::__cxx11::path' and 'std::filesystem::__cxx11::path')
    || (__p.has_root_name() && __p.root_name() != root_name()))

我的Cmake文件是:

cmake_minimum_required(VERSION 3.15)
project(FinalParser)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_flaGS "-std=c++17 -lc++fs")


set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(FinalParser main.cpp Parse/Parser.cpp Parse/Parser.cpp Parse/Parser.h files.h Graph/Parser.cpp Graph/Parser.h)
target_link_libraries(FinalParser stdc++fs)


SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/Users/user/Desktop/boost_1_71_0")
SET(CMAKE_libraRY_PATH ${CMAKE_libraRY_PATH} "C:/Users/user/Desktop/boost_1_71_0/libs")

FIND_PACKAGE(Boost)
IF (Boost_FOUND)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
    ADD_DEFINITIONS( "-DHAS_BOOST" )
ENDIF()

我该如何解决?

zhangcy_77 回答:如何解决文件系统错误的CLion问题?

因此,我将为您提供类似错误的完整证明解决方案,当有人尝试使用STL标头文件#include

时,也会出现这种错误。

因此,发生此错误是因为您当前正在使用MinGW网站上默认的GCC版本8.2.0。要解决此问题,您需要更新到GCC 10.2.0

以下是您需要遵循的步骤:-

  1. https://www.msys2.org/下载并安装Msys2
  2. 运行或启动它,然后键入pacman -Syu并按Enter,然后将要求您继续输入Y / N,只需键入enter而不按Y / n即可。
  3. 关闭此窗口,然后再次启动msys2,然后再次键入相同的命令,直到显示无关或更新为止。
  4. 同样,我也分享了youtube视频的链接。 https://www.youtube.com/watch?v=aXF4A5UeSeM&

5。为了检查您是否已经成功安装了GCC 10.2.0,只需打开cmd并键入GCC --version,然后按Enter即可,如果显示10.2.0则表示您已成功完成此操作,请耐心等待。 6.现在,卸载Clion或您正在使用的任何IDE。 7.在重新安装它之前,您需要删除一些剩余的Jetbrains转储文件,这些文件显示在程序文件文件夹中(名称为Jetbrains)。删除该文件夹并重新安装。 8.现在选择Msys2 / MingW-64,而不是安装时系统中以前的Msys2 / MingW-64(正常的MinGW)。 9.现在,您可以转到“添加或删除程序”部分,可以删除浪费正常的MinGW-64,而不是msys2(不要删除msys2)仅删除ming64。 10.现在,您可以享受运行该性感的stl库而不会出现任何错误了。

不过,如果您在执行这些步骤时遇到任何问题,请在评论中问我。

本文链接:https://www.f2er.com/2888390.html

大家都在问