首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何启用filesystem.h或修复实验性的/filesystem?

如何启用filesystem.h或修复实验性的/filesystem?
EN

Stack Overflow用户
提问于 2019-07-25 16:05:52
回答 2查看 2.9K关注 0票数 3

我必须为我的项目编写文件系统代码。我在工作中使用Linux和Clion。我被包含并试图编译简单的代码,但是有错误说没有引用std::experimental::filesystem::create:directories.编译器默认是c++ (我试过了,但也有错误)。我不能只收录,我不知道下一步该做什么。有谁可以帮我?

我希望通过std::experimental::filesystem::create_directory("root)创建目录

EN

回答 2

Stack Overflow用户

发布于 2019-07-25 16:23:16

根据您的编译器、标准库及其版本,您需要链接到单独的文件系统库:

从6.x和7.x:#include <experimental/filesystem>提供std::experimental::filesystem,然后您必须使用-lstdc++fs

  • Clang/libc++ 8.x和更高版本进行链接:#include <filesystem>提供std::filesystem,然后您必须使用-lc++experimental.

  • Clang/libc++ 5.x到6.x进行链接:#include <experimental/filesystem>为您提供std::experimental::filesystem,然后您必须使用-lc++experimental.

  • Clang/libc++ 7.x和更高版本进行链接:#include <filesystem>为您提供<std::experimental::filesystem>D18std::experimental::filesystem>,然后您必须使用code进行链接

请注意,您将需要显式构建libc++

代码语言:javascript
复制
-DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=YES

和/或

代码语言:javascript
复制
-DLIBCXX_INSTALL_FILESYSTEM_LIBRARY=YES
票数 4
EN

Stack Overflow用户

发布于 2019-07-27 15:11:02

我解决了这个问题。对于所有阅读这个问题的人来说,在CMakeLists.txt中,首先必须链接库。CMakeLists.txt必须如下所示:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.14)
project(FileSystem)

set(CMAKE_CXX_STANDARD 17)
link_libraries(-lstdc++fs)
add_executable(FileSystem main.cpp Superblok.cpp Superblok.h Inode.cpp Inode.h 
Memory.cpp Memory.h Filesystem.cpp Filesystem.h)

如果你把link_libraries(-lstdc++fs)放在最后,你的代码就不能工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57197132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档