web-dev-qa-db-fra.com

Pourquoi ne puis-je pas utiliser <experimental / filesystem> avec g ++ 4.9.2?

J'essaie d'utiliser système de fichiers . J'ai -std=c++11 -std=c++1y dans mon CMakeLists.txt. La version de GCC est 4.9.2. Cependant, j'ai une erreur:

/home/loom/MyProject/src/main.cpp:5:35: fatal error: experimental/filesystem: No such file or directory
 #include <experimental/filesystem>
                                   ^
compilation terminated.

Quelle est la bonne façon d'utiliser std::experimental::filesystem?

25
Loom

Si nous regardons le état libstdc ++ nous voyons qu'ils ont un support pour le TS du système de fichiers:

Papier | Titre | Statut

........

N4100 | Système de fichiers | Oui

mais ça dit:

Cette page décrit le support C++ 14 et la bibliothèque TS dans le SVC GCC principal, pas dans une version particulière.

et en essayant ceci Wandbox on dirait que cette bibliothèque n'est disponible que sur la dernière branche de développement 6.0 et je ne peux pas trouver plus de détails au-delà de cela.

Mise à jour

Mise à jour de Jonathan Wakely:

Il est également maintenant disponible dans la branche gcc-5 dans Subversion, et sera inclus dans la version GCC 5.3 plus tard cette année.

En conséquence également de Jonathan Wakely réponse ici nous devons compiler en utilisant -lstdc++fs. Ceci est couvert dans la Section de liaison des documents gcc :

GCC 5.3 inclut une implémentation de la bibliothèque Filesystem définie par la spécification technique ISO/IEC TS 18822: 2015. Comme il s'agit d'une extension de bibliothèque expérimentale, ne faisant pas partie de la norme C++, elle est implémentée dans une bibliothèque distincte, libstdc ++ fs.a, et il n'y a pas de bibliothèque partagée pour elle. Pour utiliser la bibliothèque, vous devez inclure et lier avec -lstdc ++ fs. L'implémentation de la bibliothèque est incomplète sur les plates-formes non POSIX, en particulier la prise en charge de Windows est rudimentaire.

En raison de la nature expérimentale de la bibliothèque Filesystem, les garanties habituelles sur la stabilité ABI et la compatibilité descendante ne s'appliquent pas à elle. Il n'y a aucune garantie que les composants de tout en-tête resteront compatibles entre les différentes versions de GCC.

Voir aussi Tableau 3.1. Options de commande C++ .

26
Shafik Yaghmour