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

时间:2011-08-07 02:22:33

标签: c++ windows linux

是否有任何跨平台方式可以找出哪个dir应该是我的应用程序配置?

例如,Mozilla Firefox在Linux上使用/home/user/.mozilla,在Windows上使用%APPDATA%\ Mozilla。 http://kb.mozillazine.org/Profile_folder_-_Firefox#Navigating_to_the_profile_folder

是否有任何lib处理它,或者只是#ifdef?

2 个答案:

答案 0 :(得分:2)

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

我认为大多数通用跨平台库都有一种获取基本配置目录的方法(通常是Linux上的$ HOME / .config /和Windows上的%APPDATA)。例如,GLib有g_get_user_config_dir(),您需要做的就是将您的应用名称附加到结果中(未经测试的代码):

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;
}

答案 1 :(得分:1)

我担心你必须采用#ifdef方式,没有听到/看过任何lib这样做。