假设我的应用程序从工作目录 A 运行,并摄取目录 B 中的配置文件(绝对路径已知)。然后,此配置文件将引用相对于配置文件或绝对的其他文件 (C)。它不必是同一工作树的一部分。
为了可视化:
A (workdir)
├── config
│ └── default.yaml (B) --\
├── data | relative (or absolute) path to image (C)
│ └── image.png <--------/
├── tools
│ └── myapp.exe
│
我现在如何规范我的路径 C 相对于工作目录 A 的关系?或者换句话说,如何确保 C 中的路径相对于 A 进行重写,以便当我在 A 中运行的应用程序查看时它们引用相同的文件?我想用
std::filesystem
来实现这一点。
如果你的资源路径是
resourcePath
并且你的配置路径是configPath
那么你可以这样做:
if (resourcePath.is_relative())
{
resourcePath = configPath.parent_path() / resourcePath;
}