在Ubuntu 18.04上支持C++17的std::filesystem的方法

      在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 
//#include  // g++ 7.5
#include  // 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

      执行结果如下所示:

你可能感兴趣的:(Linux,filesystem)