在Ubuntu 18.04上通过命令sudo apt install gcc g++安装的gcc/g++版本为7.5,此版本并不直接支持filesystem,如下图所示:
Ubuntu 18.04上的g++ 7.5支持experimental的filesystem,即std::experimental::filesystem,若想使Ubuntu 18.04支持std::filesystem,一种方法是升级g++,依次执行如下命令:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-9 g++-9
# 修改软链接
cd /usr/bin
sudo rm gcc g++
sudo ln -s gcc-9 gcc
sudo ln -s g++-9 g++
测试代码test_filesystem.cpp如下:
#include <iostream>
//#include <experimental/filesystem> // g++ 7.5
#include <filesystem> // g++ 9.4
int main()
{
//std::experimental::filesystem::path current_directory = std::experimental::filesystem::current_path(); // g++ 7.5
std::filesystem::path current_directory = std::filesystem::current_path(); // g++ 9.4
std::cout << "current directory: " << current_directory << std::endl;
return 0;
}
编译脚本build.sh如下:
#! /bin/bash
#g++ -o test_filesystem test_filesystem.cpp -lstdc++fs # g++ 7.5
g++ -o test_filesystem test_filesystem.cpp -std=c++17 # g++ 9.4
执行结果如下所示: