web-dev-qa-db-ja.com

g ++ 4.9.2で<experimental / filesystem>を使用できないのはなぜですか?

filesystem を使用しようとしています。 -std=c++11 -std=c++1yCMakeLists.txtがあります。 GCCバージョンは4.9.2です。ただし、エラーが発生しました。

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

std::experimental::filesystemを使用する正しい方法は何ですか?

25
Loom

libstdc ++ status を見ると、ファイルシステムTSがサポートされていることがわかります。

紙|タイトル|状態

........

N4100 |ファイルシステム| Y

しかし、それは言う:

このページでは、特定のリリースではなく、メインラインGCC SVNでのC++ 14およびライブラリTSのサポートについて説明します。

Wandbox でこれを試してみると、このライブラリは最新の開発ブランチでのみ利用できるように見えます6.0と私はそれ以上の詳細を見つけることができません。

更新

Jonathan Wakelyからの更新:

Subversionのgcc-5-branchでも利用できるようになり、今年後半にGCC 5.3リリースに含まれる予定です。

また、ジョナサンウェイクリーの こちらから回答 に従って、-lstdc++fs。これは gccドキュメントのリンクセクション で説明されています。

GCC 5.3には、技術仕様ISO/IEC TS 18822:2015で定義されているFilesystemライブラリの実装が含まれています。これは実験的なライブラリ拡張であり、C++標準の一部ではないため、別のライブラリlibstdc ++ fs.aに実装されており、共有ライブラリはありません。ライブラリを使用するには、-lstdc ++ fsを含めてリンクする必要があります。ライブラリの実装は、非POSIXプラットフォームでは不完全です。特に、Windowsのサポートは基本的です。

Filesystemライブラリの実験的な性質により、ABIの安定性と後方互換性に関する通常の保証は適用されません。ヘッダー内のコンポーネントが異なるGCCリリース間で互換性を維持する保証はありません。

表3.1。C++コマンドオプション も参照してください。

26
Shafik Yaghmour