我使用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()
我该如何解决?