Pourquoi ne puis-je pas utiliser avec g++ 4.9.2?

Je suis en train d'utiliser système de fichiers. J'ai -std=c++11 -std=c++1y dans mon CMakeLists.txt. La version 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?

24
demandé sur einpoklum 2015-05-07 16:54:15

1 réponses

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

Papier / Titre / Statut

........

N4100 / Système De Fichiers / Y

, Mais il dit:

Cette page décrit le support C++14 et library TS dans mainline GCC SVN, pas dans une version particulière.

Et d'essayer cela sur Wandbox il semble que cette bibliothèque est uniquement disponible sur la dernière direction du 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 de Subversion, et sera inclus dans la version 5.3 de GCC plus tard cette année.

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

GCC 5.3 comprend un implémentation de la bibliothèque de systèmes de fichiers 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.un, 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 le support de Windows est rudimentaire.

En raison de l'expérience nature de la bibliothèque de système de fichiers les garanties habituelles sur la stabilité ABI et la rétrocompatibilité ne s'appliquent pas à elle. Il n'y a aucune garantie que les composants dans n'importe quel en-tête resteront compatibles entre les différentes versions de GCC.

Voir aussi Tableau 3.1. Options De Commande C++ .

26
répondu Shafik Yaghmour 2017-05-23 10:29:47