std::filesystem current_path返回根路径



我只想通过std::filesystem::path::current_path打印当前路径及其内容(编译器是emcc(。下面的一些代码:

//... some stuff ...
namespace fs = 
#if defined(_MSC_VER) || defined(_WIN32) 
std::filesystem;
#else
std::__fs::filesystem;
#endif
//... some stuff ...
cfg::Config::Config() { this->Path = fs::current_path(); }
void cfg::Config::getPath()
{
for (auto &p : fs::directory_iterator(this->Path)) std::cout << p.path() << 'n';
}

对于windows,它运行良好,输出看起来像:

...
"D:\GitHub\Emscripten_OpenGL\build\cmake_install.cmake"
"D:\GitHub\Emscripten_OpenGL\build\Debug"
"D:\GitHub\Emscripten_OpenGL\build\Emscripten_Graphics.dir"
"D:\GitHub\Emscripten_OpenGL\build\Emscripten_Graphics.sln"
"D:\GitHub\Emscripten_OpenGL\build\Emscripten_Graphics.vcxproj"
"D:\GitHub\Emscripten_OpenGL\build\Emscripten_Graphics.vcxproj.filters"
"D:\GitHub\Emscripten_OpenGL\build\Emscripten_Graphics.vcxproj.user"
...

然而,无论是对于Linux子系统,还是对于带有Ubuntu映像的docker容器,它都只打印根目录:

application_1  | [100%] Built target Emscripten_Graphics
application_1  | make: make
application_1  | "/tmp"
application_1  | "/home"
application_1  | "/dev"
application_1  | "/proc"

我可能错过了Linux的std::filesystem吗?

我找到了一个解决方案,所以它可能对其他人有用。感谢@Sugar,我挖掘了Emscripten文件系统API。emscripten创建自己的虚拟文件系统,并上传c++代码中使用的文件。根据这个问题,修复它的方法是在编译时添加-s NODERAWFS=1作为标志。

相关内容

  • 没有找到相关文章

最新更新