Error de referencia indefinido con la nueva biblioteca del sistema de archivos y clang ++ 7

staba tratando de sacar el nuevofilesystem STL library, pero por alguna razón obtengo errores. LosClang++7 sitio web indica que debería admitir el nuevofilesystem biblioteca - de hechoclang corre delante deg++ Yo creo

Usé algún código de otra publicación de Stack Exchange, por lo que debería ser válido en función de la cantidad de votos a favor. Esto debería ir al directorio especificado e imprimir todos los archivos en ese directorio. Aquí está el código.

#include <iostream>
#include <string>
#include <experimental/filesystem>

namespace fs = std::experimental::filesystem;

int main(int argc, char *argv[])
{

    std::string path = "/home/.../Downloads";
    for (const auto & entry : fs::directory_iterator(path))
    {
        std::cout << entry.path() << std::endl;
    }

}

Los mensajes de error que recibo son:

CMakeFiles/filesystem_app.dir/main.cpp.o: In function `main':
/media/.../clangcpp/filesystem_app/main.cpp:13: undefined reference to `std::experimental::filesystem::v1::__cxx11::directory_iterator::operator*() const'
/media/.../clangcpp/filesystem_app/main.cpp:13: undefined reference to `std::experimental::filesystem::v1::__cxx11::directory_iterator::operator++()'
CMakeFiles/filesystem_app.dir/main.cpp.o: In function `path<std::__cxx11::basic_string<char>, std::experimental::filesystem::v1::__cxx11::path>':
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/5.5.0/experimental/fs_path.h:198: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
CMakeFiles/filesystem_app.dir/main.cpp.o: In function `directory_iterator':
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/5.5.0/experimental/fs_dir.h:188: undefined reference to `std::experimental::filesystem::v1::__cxx11::directory_iterator::directory_iterator(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::directory_options, std::error_code*)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Me aseguré de incluir elexperimental/filesystem encabezado en lugar de solofilesystem que eliminó cualquier garabato rojo en Clion. Traté de compilar desde CLion, así como desde la línea de comandos. La cadena de compilación que utilicé fue:

  clang++-7 -Wall -std=c++17 main.cpp -o app

¿Alguien tiene una idea de lo que está mal aquí? En los mensajes de error de compilación veo la referencia astd::experimental::filesystem::v1::__cxx11::.. y me pregunto por qué esto no dicecxx17, pero no estaba seguro de si esa era la causa del problema. Indiqué explícitamentec++17 en la cadena de compilación anterior.

Respuestas a la pregunta(1)

Su respuesta a la pregunta