C++ 跨平台访问配置目录的方式

C++ 跨平台访问配置目录的方式,c++,windows,linux,C++,Windows,Linux,有没有跨平台的方法来确定哪个目录应该是我的应用程序配置 例如,Mozilla Firefox在linux上使用/home/user/.Mozilla,在Windows上使用%APPDATA%\Mozilla。 是否有任何lib可以处理它,或者它只是大量的#ifdef?我恐怕你必须走#ifdef的路,没有听说/看到任何lib可以这样做。Mozilla是一个旧的应用程序,它的配置在$HOME/.Mozilla中保留了很长一段时间。但是,鼓励新应用程序将配置文件存储在$HOME/.config/my

有没有跨平台的方法来确定哪个目录应该是我的应用程序配置

例如,Mozilla Firefox在linux上使用/home/user/.Mozilla,在Windows上使用%APPDATA%\Mozilla。


是否有任何lib可以处理它,或者它只是大量的#ifdef?

我恐怕你必须走#ifdef的路,没有听说/看到任何lib可以这样做。

Mozilla是一个旧的应用程序,它的配置在$HOME/.Mozilla中保留了很长一段时间。但是,鼓励新应用程序将配置文件存储在$HOME/.config/myappname中

我假设大多数通用跨平台库都有获取基本配置目录的方法(Linux上通常是$HOME/.config/,Windows上通常是%APPDATA)。例如,GLib具有,您只需将应用程序名称附加到结果(未测试的代码):


你知道除了油嘴滑舌之外还有其他选择吗?油嘴滑舌不是我想要的一种依赖……为什么不呢?它是一个非常小的库,依赖性很小,在编写干净的跨平台代码方面有很大帮助。关于其他选项——Qt有一个完整的配置保存类:,并且它还有一种跨平台的方式来获取主目录:
gchar *
myapp_get_config_dir ()
{
    const gchar *user_config_dir;
    gchar *my_config_dir;

    user_config_dir = g_get_user_config_dir ();
    my_config_dir = g_build_filename (user_config_dir, "myappname", NULL);

    return my_config_dir;
}