我正在尝试使用filesystem。我的-std=c++11 -std=c++1y
中有CMakeLists.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
的正确方法是什么?
答案 0 :(得分:26)
如果我们查看libstdc++ status,我们会看到他们确实支持文件系统TS:
纸|标题|状态
........
N4100 |文件系统| ÿ
但它说:
此页面描述了主线GCC SVN中的C ++ 14和库TS支持,而不是任何特定版本。
并且在Wandbox上尝试此操作时,看起来此库仅在最新的开发分支6.0
上可用,除此之外我找不到更多详细信息。
更新
Jonathan Wakely的更新:
它现在也可以在Subversion的gcc-5分支中使用,并将在今年晚些时候的GCC 5.3版本中包含。
另外,对于Jonathan Wakely的answer here,我们需要使用-lstdc++fs
进行编译。这包含在Linking section of gcc documents:
GCC 5.3包括技术规范ISO / IEC TS 18822:2015定义的文件系统库的实现。因为这是一个实验性的库扩展,不是C ++标准的一部分,所以它是在一个单独的库libstdc ++ fs.a中实现的,并且它没有共享库。要使用该库,您应该包含并链接-lstdc ++ fs。在非POSIX平台上,库实现是不完整的,特别是Windows支持是基本的。
由于Filesystem库的实验性质,ABI稳定性和向后兼容性的通常保证不适用于它。无法保证任何标头中的组件在不同的GCC版本之间保持兼容。