Итак, я пишу код C ++ на своей машине windows 10. Обычно я использую cmake (3.17.2) и minGW (g ++ 9.3.0). Я узнал о «файловой системе» и решил использовать ее, но продолжал получать ошибку, что она не определена. По-видимому, «файловая система» не была реализована в minGW до версии 9, и в то время я использовал версию 8. Итак, я обновился до версии 9. После обновления моя программа не компилировалась из-за проблемы с потоками, которую я смог решить, установив msys2 и используя его диспетчер пакетов для установки полной цепочки инструментов.
Моя текущая проблема в том, что когда я запрашиваю msys2 об этом, он говорит, что он установлен:
$ pacboy -Ss filesystem
msys/filesystem 2020.02-2 (base) [installed]
Base filesystem
но когда я пытаюсь чтобы скомпилировать программу из командной строки, я получаю следующее:
F:\things\software\Template-CMD>g++ main.cpp
main.cpp: In function 'int main(int, char**)': main.cpp:5:10: error: 'std::filesystem' has not been declared
5 | std::filesystem::current_path();
| ^~~~~~~~~~
Это результат компиляции следующей небольшой тестовой программы, состоящей из одного файла «main. cpp»:
#include <iostream>
#include <filesystem>
int main(int, char**) {
std::filesystem::current_path();
std::cout << "Hello, world!\n";
}
Я могу использовать поиск windows файла, чтобы подтвердить, что файл с именем «файловая система» действительно существует по адресу:
C: \ msys64 \ mingw64 \ include \ c ++ \ 9.3.0 \ filesystem
, поэтому я попытался скопировать его только в папку include:
C: \ msys64 \ mingw64 \ include \ filesystem
, но это тоже не сработало. В моем PATH есть только один компилятор g ++:
C: \ msys64 \ mingw64 \ bin
Чтобы показать, что g ++ - это версия 9:
F:\things\software\Template-CMD>g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.3.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-9.3.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++ --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --enable-plugin --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld
Thread model: posix
gcc version 9.3.0 (Rev2, Built by MSYS2 project)