update
This commit is contained in:
parent
964fb48b9a
commit
8f38d1d96c
@ -9,6 +9,8 @@ https://ru.wikipedia.org/wiki/FHS[FHS] («стандарт иерархии фа
|
|||||||
назначением в файловой системе. Полная текущая версия стандарта
|
назначением в файловой системе. Полная текущая версия стандарта
|
||||||
находится http://refspecs.linuxfoundation.org/fhs.shtml[здесь].
|
находится http://refspecs.linuxfoundation.org/fhs.shtml[здесь].
|
||||||
|
|
||||||
|
== Типы расположения проекта
|
||||||
|
|
||||||
В соответствии с данным стандартом, а также принятыми в ведущих
|
В соответствии с данным стандартом, а также принятыми в ведущих
|
||||||
дистрибутивах правилами размещения исполняемых файлов в каталогах
|
дистрибутивах правилами размещения исполняемых файлов в каталогах
|
||||||
пользователей, можно выделить следующие типы расположения:
|
пользователей, можно выделить следующие типы расположения:
|
||||||
@ -41,6 +43,8 @@ https://ru.wikipedia.org/wiki/FHS[FHS] («стандарт иерархии фа
|
|||||||
требованиям по логическому разделению файлов на исполняемые,
|
требованиям по логическому разделению файлов на исполняемые,
|
||||||
заголовочные, библиотеки, файлы настроек и т.д.
|
заголовочные, библиотеки, файлы настроек и т.д.
|
||||||
|
|
||||||
|
== Автоматическая адаптация к текущему окружению
|
||||||
|
|
||||||
Для обеспечения единообразной работы вне зависимости от варианта
|
Для обеспечения единообразной работы вне зависимости от варианта
|
||||||
иерархии каталогов, в которой находится исполняемый файл, можно
|
иерархии каталогов, в которой находится исполняемый файл, можно
|
||||||
выполнять автоматическую настройку на работу в текущем окружении.
|
выполнять автоматическую настройку на работу в текущем окружении.
|
||||||
@ -49,7 +53,7 @@ https://ru.wikipedia.org/wiki/FHS[FHS] («стандарт иерархии фа
|
|||||||
класс, который анализирует расположение и окружение исполняемого
|
класс, который анализирует расположение и окружение исполняемого
|
||||||
файла и предоставляет методы для получения имён каталогов,
|
файла и предоставляет методы для получения имён каталогов,
|
||||||
соответствующих текущему окружению. Названия методов и описания
|
соответствующих текущему окружению. Названия методов и описания
|
||||||
возвращаемых значений приведены в таблице
|
возвращаемых значений приведены в таблице.
|
||||||
|
|
||||||
[cols="2m,4",options="header",]
|
[cols="2m,4",options="header",]
|
||||||
|===
|
|===
|
||||||
@ -78,7 +82,33 @@ https://ru.wikipedia.org/wiki/FHS[FHS] («стандарт иерархии фа
|
|||||||
#include <myx/filesystem/paths.hpp>
|
#include <myx/filesystem/paths.hpp>
|
||||||
namespace MF = myx::filesystem;
|
namespace MF = myx::filesystem;
|
||||||
|
|
||||||
MF::Paths& paths = MF::Paths::instance();
|
MF::Paths& paths = MF::Paths::instance();
|
||||||
paths.init( QStringLiteral( CMLIB_PROJECT_NAME ), QStringLiteral( "conf" ) );
|
paths.init( QStringLiteral( "project_name" ), QStringLiteral( "conf" ) );
|
||||||
qDebug() << paths.systemConstDataDirectory();
|
qDebug() << paths.systemConstDataDirectory().path();
|
||||||
----
|
----
|
||||||
|
|
||||||
|
=== Правила выбора окружения
|
||||||
|
|
||||||
|
Класс `myx::filesystem::Paths` реализован в виде синглтона,
|
||||||
|
чтобы повторно не выполнять проверку окружения в разных частях программы.
|
||||||
|
Сначала определяются имена пользовательского и временного каталогов с
|
||||||
|
помощью вызовов функций https://doc.qt.io/qt-5/qdir.html#homePath[`QDir::homePath`]
|
||||||
|
и https://doc.qt.io/qt-5/qdir.html#tempPath[`QDir::tempPath`], затем
|
||||||
|
имена пользовательских каталогов для настроек, постоянных и изменяемых
|
||||||
|
данных и журналов. Эти значения не зависят от расположения исполняемого,
|
||||||
|
а определяются согласно значениям переменных окружения, либо значениям
|
||||||
|
принятыми в стандартах. Пример имён каталогов для пользователя `user`
|
||||||
|
и проекта `project` приведён в таблице.
|
||||||
|
|
||||||
|
|
||||||
|
[cols="3,4m,3m",options="header",]
|
||||||
|
|===
|
||||||
|
| Назначение каталога | Метод | Значение
|
||||||
|
| Домашний каталог | homeDirectory() | /home/user
|
||||||
|
| Временные файлы | tempDirectory() | /tmp
|
||||||
|
| Файлы настройки | userConfigDirectory() | /home/user/.config/project
|
||||||
|
| Неизменяемые файлы | userConstDataDirectory() | /home/user/.local/share/project/data
|
||||||
|
| Изменяемые файлы | userVarDataDirectory() | /home/user/.local/share/project/lib
|
||||||
|
| Журналы работы | userLogDirectory() | /home/user/.local/share/project/log
|
||||||
|
|===
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user