std::filesystem current_path returns根一
The std::filesystem current_path returns the root one
我只想打印当前路径及其内容,通过std::filesystem::path::current_path
(编译器是emcc
this one)。下面的一些代码:
//... 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 I dug in the Emscripten Filesystem API. The emscripten creates its own virtual filesystem and uploading there files used in c++ code. According to this issue 修复它的方法是在编译时添加 -s NODERAWFS=1
作为标志。
我只想打印当前路径及其内容,通过std::filesystem::path::current_path
(编译器是emcc
this one)。下面的一些代码:
//... 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 I dug in the Emscripten Filesystem API. The emscripten creates its own virtual filesystem and uploading there files used in c++ code. According to this issue 修复它的方法是在编译时添加 -s NODERAWFS=1
作为标志。