Compare commits
9 Commits
0e27e5e68d
...
master
Author | SHA1 | Date | |
---|---|---|---|
9206a9ff3a | |||
25b194750e | |||
25491b80c4 | |||
8c3a99eff9 | |||
a2cca2dd8c | |||
8e3f80d82c | |||
763ec72402 | |||
7505316c2c | |||
8639788c93 |
3
.gitignore
vendored
@ -1,3 +1,5 @@
|
|||||||
|
/.asciidoctor
|
||||||
|
|
||||||
cache/*
|
cache/*
|
||||||
cache-ascii/*
|
cache-ascii/*
|
||||||
cache-full/*
|
cache-full/*
|
||||||
@ -10,6 +12,7 @@ upload.sh
|
|||||||
wiki/**/diag*.png
|
wiki/**/diag*.png
|
||||||
wiki/**/*.png.cache
|
wiki/**/*.png.cache
|
||||||
|
|
||||||
|
*.pyc
|
||||||
*.txt
|
*.txt
|
||||||
upload-*.sh
|
upload-*.sh
|
||||||
|
|
||||||
|
25
.gitmodules
vendored
@ -1,28 +1,27 @@
|
|||||||
[submodule "plugins/thirdparty/md-metayaml"]
|
[submodule "plugins/thirdparty/md-metayaml"]
|
||||||
path = plugins/thirdparty/md-metayaml
|
path = plugins/thirdparty/md-metayaml
|
||||||
url = git@git.246060.ru:/f1x1t/pelican-md-metayaml.git
|
url = git@git.246060.ru:f1x1t/pelican-md-metayaml.git
|
||||||
[submodule "plugins/thirdparty/pelican-css"]
|
|
||||||
path = plugins/thirdparty/pelican-css
|
|
||||||
url = https://notabug.org/jorgesumle/pelican-css
|
|
||||||
[submodule "themes/bootstrap4"]
|
[submodule "themes/bootstrap4"]
|
||||||
path = themes/bootstrap4
|
path = themes/bootstrap4
|
||||||
url = git@git.246060.ru:/f1x1t/pelican-theme-bootstrap4.git
|
url = git@git.246060.ru:f1x1t/pelican-theme-bootstrap4.git
|
||||||
[submodule "plugins/thirdparty/yuicompressor-opt"]
|
[submodule "plugins/thirdparty/yuicompressor-opt"]
|
||||||
path = plugins/thirdparty/yuicompressor-opt
|
path = plugins/thirdparty/yuicompressor-opt
|
||||||
url = git@git.246060.ru:/f1x1t/pelican-yuicompressor-opt.git
|
url = git@git.246060.ru:f1x1t/pelican-yuicompressor-opt.git
|
||||||
[submodule "plugins/thirdparty/pelidoc"]
|
[submodule "plugins/thirdparty/pelidoc"]
|
||||||
path = plugins/thirdparty/pelidoc
|
path = plugins/thirdparty/pelidoc
|
||||||
url = git@git.246060.ru:/f1x1t/pelican-pelidoc.git
|
url = git@git.246060.ru:f1x1t/pelican-pelidoc.git
|
||||||
[submodule "plugins/thirdparty/pandoc_reader"]
|
[submodule "plugins/thirdparty/pandoc_reader"]
|
||||||
path = plugins/thirdparty/pandoc_reader
|
path = plugins/thirdparty/pandoc_reader
|
||||||
url = git@git.246060.ru:/f1x1t/pelican-pandoc-reader
|
url = git@git.246060.ru:f1x1t/pelican-pandoc-reader
|
||||||
branch = master
|
|
||||||
[submodule "plugins/thirdparty/replacer"]
|
|
||||||
path = plugins/thirdparty/replacer
|
|
||||||
url = git@github.com:/narusemotoki/replacer
|
|
||||||
[submodule "plugins/thirdparty/asciidoctor"]
|
[submodule "plugins/thirdparty/asciidoctor"]
|
||||||
path = plugins/thirdparty/asciidoctor
|
path = plugins/thirdparty/asciidoctor
|
||||||
url = git@git.246060.ru:f1x1t/pelican-asciidoctor
|
url = git@git.246060.ru:f1x1t/pelican-asciidoctor
|
||||||
|
[submodule "plugins/thirdparty/replacer"]
|
||||||
|
path = plugins/thirdparty/replacer
|
||||||
|
url = git@git.246060.ru:f1x1t/pelican-replacer
|
||||||
|
[submodule "plugins/thirdparty/pelican-css"]
|
||||||
|
path = plugins/thirdparty/pelican-css
|
||||||
|
url = git@git.246060.ru:f1x1t/pelican-css
|
||||||
[submodule "plugins/official"]
|
[submodule "plugins/official"]
|
||||||
path = plugins/official
|
path = plugins/official
|
||||||
url = git@github.com:getpelican/pelican-plugins
|
url = git@git.246060.ru:f1x1t/pelican-plugins-official
|
||||||
|
44
wiki/Linux/System/Настройка Redis.adoc
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
= Настройка Redis
|
||||||
|
:category: Linux
|
||||||
|
:tags: Linux, Redis,
|
||||||
|
|
||||||
|
Создать файл `/etc/sysctl.d/98-redis.conf`:
|
||||||
|
|
||||||
|
[source,text]
|
||||||
|
----
|
||||||
|
net.core.somaxconn=65535
|
||||||
|
vm.overcommit_memory=1
|
||||||
|
----
|
||||||
|
|
||||||
|
Перезагрузить систему или выполнить команду:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
sudo sysctl -p
|
||||||
|
----
|
||||||
|
|
||||||
|
Создать файл `/etc/systemd/system/disable-transparent-huge-pages.service`:
|
||||||
|
|
||||||
|
[source,text]
|
||||||
|
----
|
||||||
|
[Unit]
|
||||||
|
Description=Disable Transparent Huge Pages (THP)
|
||||||
|
DefaultDependencies=no
|
||||||
|
After=sysinit.target local-fs.target
|
||||||
|
Before=mongod.service redis.service redis-server.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null'
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=basic.target
|
||||||
|
----
|
||||||
|
|
||||||
|
Разрешить автоматический запуск при загрузке системы:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
sudo systemctl enable disable-transparent-huge-pages.service
|
||||||
|
----
|
||||||
|
|
29
wiki/Linux/System/Настройка параметров локальной сети.adoc
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
= Настройка параметров локальной сети
|
||||||
|
:category: Linux
|
||||||
|
:tags: Linux, сеть, ethernet
|
||||||
|
|
||||||
|
Создать файл `/etc/sysctl.d/98-network.conf`:
|
||||||
|
|
||||||
|
[source,text]
|
||||||
|
----
|
||||||
|
net.core.rmem_default=262144
|
||||||
|
net.core.wmem_default=262144
|
||||||
|
|
||||||
|
net.core.rmem_max=33554432
|
||||||
|
net.core.wmem_max=33554432
|
||||||
|
|
||||||
|
net.ipv4.tcp_rmem = 4096 262144 33554432
|
||||||
|
net.ipv4.tcp_wmem = 4096 262144 33554432
|
||||||
|
net.ipv4.tcp_mem = 4096 262144 33554432
|
||||||
|
|
||||||
|
net.core.netdev_max_backlog = 16384
|
||||||
|
net.ipv4.ipfrag_high_threshold = 8388608
|
||||||
|
----
|
||||||
|
|
||||||
|
Перезагрузить систему или выполнить команду:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
sudo sysctl -p
|
||||||
|
----
|
||||||
|
|
1606
wiki/Prog/Development/CMake управление проектом v2.adoc
Normal file
@ -21,28 +21,25 @@ include::{l10ndir}/{lang}.adoc[]
|
|||||||
│ ├── debug
|
│ ├── debug
|
||||||
│ │ ├── bin
|
│ │ ├── bin
|
||||||
│ │ ├── etc
|
│ │ ├── etc
|
||||||
│ │ ├── files
|
|
||||||
│ │ │ ├── data
|
|
||||||
│ │ │ ├── lib
|
|
||||||
│ │ │ └── log
|
|
||||||
│ │ ├── include
|
│ │ ├── include
|
||||||
│ │ └── lib
|
│ │ ├── lib
|
||||||
|
│ │ ├── log
|
||||||
|
│ │ ├── share
|
||||||
|
│ │ └── var
|
||||||
│ └── release
|
│ └── release
|
||||||
├── .git
|
├── .git
|
||||||
├── .gitlab-ci
|
|
||||||
├── cmake
|
├── cmake
|
||||||
│ ├── cmlib
|
│ ├── cmlib
|
||||||
│ ├── doc
|
|
||||||
│ ├── etc
|
│ ├── etc
|
||||||
│ │ └── uncrustify
|
│ │ └── uncrustify
|
||||||
│ ├── find
|
│ ├── find
|
||||||
│ └── generators
|
│ └── generators
|
||||||
├── doc
|
├── doc
|
||||||
├── files
|
├── files
|
||||||
│ ├── data
|
|
||||||
│ ├── etc
|
│ ├── etc
|
||||||
│ ├── lib
|
│ ├── log
|
||||||
│ └── log
|
│ ├── share
|
||||||
|
│ └── var
|
||||||
├── l10n
|
├── l10n
|
||||||
├── src
|
├── src
|
||||||
│ ├── app
|
│ ├── app
|
||||||
@ -61,17 +58,15 @@ include::{l10ndir}/{lang}.adoc[]
|
|||||||
|`_build/debug` | Результаты компиляции в режиме отладки
|
|`_build/debug` | Результаты компиляции в режиме отладки
|
||||||
|`_build/debug/bin` | Исполняемые файлы
|
|`_build/debug/bin` | Исполняемые файлы
|
||||||
|`_build/debug/etc` | Символическая ссылка на каталог `cmex/files/etc`
|
|`_build/debug/etc` | Символическая ссылка на каталог `cmex/files/etc`
|
||||||
|`_build/debug/files/data` | Символическая ссылка на каталог `cmex/files/data`
|
|
||||||
|`_build/debug/files/lib` | Символическая ссылка на каталог `cmex/files/lib`
|
|
||||||
|`_build/debug/files/log` | Символическая ссылка на каталог `cmex/files/log`
|
|
||||||
|`_build/debug/include` | Заголовочные файлы копируемые и генерируемые во время сборки
|
|`_build/debug/include` | Заголовочные файлы копируемые и генерируемые во время сборки
|
||||||
|`_build/debug/lib` | Статические и динамические библиотеки
|
|`_build/debug/lib` | Статические и динамические библиотеки
|
||||||
|
|`_build/debug/log` | Символическая ссылка на каталог `cmex/files/log`
|
||||||
|
|`_build/debug/share` | Символическая ссылка на каталог `cmex/files/share`
|
||||||
|
|`_build/debug/var` | Символическая ссылка на каталог `cmex/files/var`
|
||||||
|`_build/release` | Результаты компиляции в режиме выпуска (иерархия аналогична `debug`)
|
|`_build/release` | Результаты компиляции в режиме выпуска (иерархия аналогична `debug`)
|
||||||
|`.git` | Системные файлы репозитория git
|
|`.git` | Системные файлы репозитория Git
|
||||||
|`.gitlab.ci` | Шаблон правил для автоматической сборки на сервере Gitlab
|
|
||||||
|`cmake` | Файлы с дополнительными функциями для CMake
|
|`cmake` | Файлы с дополнительными функциями для CMake
|
||||||
|`cmake/cmlib` | Библиотека функций для CMake
|
|`cmake/cmlib` | Библиотека функций для CMake
|
||||||
|`cmake/doc` | Правила для автоматической генерации документации
|
|
||||||
|`cmake/etc` | Файлы настроек, используемые в CMake
|
|`cmake/etc` | Файлы настроек, используемые в CMake
|
||||||
|`cmake/etc/uncrustify` | Файл настройки для программы автоматического форматирования исходных текстов
|
|`cmake/etc/uncrustify` | Файл настройки для программы автоматического форматирования исходных текстов
|
||||||
|`cmake/find` | Модули CMake для поиска внешних программ и библиотек
|
|`cmake/find` | Модули CMake для поиска внешних программ и библиотек
|
||||||
@ -79,9 +74,9 @@ include::{l10ndir}/{lang}.adoc[]
|
|||||||
|`doc` | Документация для проекта
|
|`doc` | Документация для проекта
|
||||||
|`files` | Каталог для дополнительных файлов
|
|`files` | Каталог для дополнительных файлов
|
||||||
|`files/etc` | Каталог для файлов настроек проекта
|
|`files/etc` | Каталог для файлов настроек проекта
|
||||||
|`files/data` | Каталог для неизменяемых файлов
|
|
||||||
|`files/lib` | Каталог для изменяемых файлов
|
|
||||||
|`files/log` | Каталог для журналов
|
|`files/log` | Каталог для журналов
|
||||||
|
|`files/share` | Каталог для неизменяемых файлов
|
||||||
|
|`files/var` | Каталог для изменяемых файлов
|
||||||
|`l10n` | Файлы переводов
|
|`l10n` | Файлы переводов
|
||||||
|`src` | Исходные тексты
|
|`src` | Исходные тексты
|
||||||
|`src/app` | Исходные тексты программы
|
|`src/app` | Исходные тексты программы
|
||||||
@ -115,7 +110,7 @@ git clone --recursive https://git.246060.ru/f1x1t/cmlib-example-base
|
|||||||
=== Инициализация подмодулей
|
=== Инициализация подмодулей
|
||||||
|
|
||||||
Для начала нужно создать каталог для проекта, перейти в него и
|
Для начала нужно создать каталог для проекта, перейти в него и
|
||||||
инициализировать репозиторий git:
|
инициализировать репозиторий:
|
||||||
|
|
||||||
[source,sh]
|
[source,sh]
|
||||||
----
|
----
|
||||||
@ -132,8 +127,6 @@ git init
|
|||||||
git submodule add https://git.246060.ru/f1x1t/cmlib.git cmake/cmlib
|
git submodule add https://git.246060.ru/f1x1t/cmlib.git cmake/cmlib
|
||||||
git submodule add https://git.246060.ru/f1x1t/cmake-find.git cmake/find
|
git submodule add https://git.246060.ru/f1x1t/cmake-find.git cmake/find
|
||||||
git submodule add https://git.246060.ru/f1x1t/cmake-generators.git cmake/generators
|
git submodule add https://git.246060.ru/f1x1t/cmake-generators.git cmake/generators
|
||||||
git submodule add https://git.246060.ru/f1x1t/cmake-doc.git cmake/doc
|
|
||||||
git submodule add https://git.246060.ru/f1x1t/uncrustify-config.git cmake/etc/uncrustify
|
|
||||||
git commit -a -m "Начало проекта"
|
git commit -a -m "Начало проекта"
|
||||||
----
|
----
|
||||||
|
|
||||||
@ -146,13 +139,54 @@ git remote add origin АДРЕС_РЕПОЗИТОРИЯ_НА_СЕРВЕРЕ
|
|||||||
git push -u origin master
|
git push -u origin master
|
||||||
----
|
----
|
||||||
|
|
||||||
|
После отправки файлов на сервер отредактировать файл `.gitmodules`,
|
||||||
|
так чтобы он содержал только относительные пути к подмодулям, чтобы
|
||||||
|
система автоматической сборки проекта могла их загружать без дополнительной
|
||||||
|
авторизации. Например, заменить:
|
||||||
|
|
||||||
|
[source,ini]
|
||||||
|
----
|
||||||
|
[submodule "cmake/cmlib"]
|
||||||
|
path = cmake/cmlib
|
||||||
|
url = git@git.246060.ru:f1x1t/cmlib.git
|
||||||
|
[submodule "cmake/find"]
|
||||||
|
path = cmake/find
|
||||||
|
url = git@git.246060.ru:f1x1t/cmake-find.git
|
||||||
|
[submodule "cmake/generators"]
|
||||||
|
path = cmake/generators
|
||||||
|
url = git@git.246060.ru:f1x1t/cmake-generators.git
|
||||||
|
----
|
||||||
|
|
||||||
|
на
|
||||||
|
|
||||||
|
[source,ini]
|
||||||
|
----
|
||||||
|
[submodule "cmake/cmlib"]
|
||||||
|
path = cmake/cmlib
|
||||||
|
url = ../../f1x1t/cmlib.git
|
||||||
|
[submodule "cmake/find"]
|
||||||
|
path = cmake/find
|
||||||
|
url = ../../f1x1t/cmake-find.git
|
||||||
|
[submodule "cmake/generators"]
|
||||||
|
path = cmake/generators
|
||||||
|
url = ../../f1x1t/cmake-generators.git
|
||||||
|
----
|
||||||
|
|
||||||
|
Обновить пути и сохранить изменения:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
git submodule sync --recursive
|
||||||
|
git add .gitmodules
|
||||||
|
git commit -m "Настройка путей к подмодулям"
|
||||||
|
----
|
||||||
|
|
||||||
Загрузить шаблоны для автоматической сборки проекта в разных вариантах
|
Загрузить шаблоны для автоматической сборки проекта в разных вариантах
|
||||||
программных окружений и зафиксировать изменения:
|
программных окружений и зафиксировать изменения:
|
||||||
|
|
||||||
[source,sh]
|
[source,sh]
|
||||||
----
|
----
|
||||||
mkdir .gitlab-ci
|
wget https://git.246060.ru/f1x1t/gitlab-ci/raw/branch/master/.gitlab-ci.yml
|
||||||
wget -O .gitlab-ci.yml https://git.246060.ru/f1x1t/gitlab-ci/raw/branch/master/.gitlab-ci.yml
|
|
||||||
git add .gitlab-ci.yml
|
git add .gitlab-ci.yml
|
||||||
git commit -m "Настройка автосборки"
|
git commit -m "Настройка автосборки"
|
||||||
----
|
----
|
||||||
@ -166,30 +200,35 @@ git add .clang-tidy
|
|||||||
git commit -m "Настройка Clang-Tidy"
|
git commit -m "Настройка Clang-Tidy"
|
||||||
----
|
----
|
||||||
|
|
||||||
|
Загрузить файл настройки для программы https://github.com/cheshirekow/cmake_format/[cmake-format],
|
||||||
|
используемой для форматирования файлов CMake:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
wget https://git.246060.ru/f1x1t/cmake-format/raw/branch/master/.cmake-format.py
|
||||||
|
git add .cmake-format.py
|
||||||
|
git commit -m "Настройка cmake-format"
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
Создать стандартные файлы и каталоги:
|
Создать стандартные файлы и каталоги:
|
||||||
|
|
||||||
[source,sh]
|
[source,sh]
|
||||||
----
|
----
|
||||||
mkdir -p doc/breathe
|
mkdir -p doc/breathe
|
||||||
touch doc/breathe/index.md.in
|
touch doc/breathe/index.md.in
|
||||||
mkdir -p files/etc
|
mkdir -p files/{etc,log,share,var}
|
||||||
touch files/etc/.keep-directory
|
touch files/{etc,log,share,var}/.gitkeep
|
||||||
mkdir -p files/data
|
|
||||||
touch files/data/.keep-directory
|
|
||||||
mkdir -p files/lib
|
|
||||||
touch files/lib/.keep-directory
|
|
||||||
mkdir -p files/log
|
|
||||||
touch files/log/.keep-directory
|
|
||||||
git add doc files
|
git add doc files
|
||||||
git commit -m "Стандартные файлы и каталоги"
|
git commit -m "Стандартные файлы и каталоги"
|
||||||
----
|
----
|
||||||
|
|
||||||
IMPORTANT: Файлы `.keep-directory` позволяют защитить каталоги от удаления
|
IMPORTANT: Файлы `.gitkeep` позволяют защитить каталоги от удаления
|
||||||
(будет выводиться дополнительное предупреждение, что каталог не пуст) и
|
(будет выводиться дополнительное предупреждение, что каталог не пуст) и
|
||||||
обеспечивают возможность помещения каталогов с систему контроля версий git,
|
обеспечивают возможность помещения каталогов с систему контроля версий Git,
|
||||||
в которой пустые каталоги недопустимы (это правильно!).
|
в которой пустые каталоги недопустимы (это правильно!).
|
||||||
|
|
||||||
Создать файл `.gitignore` для исключения каталогов и файлов из-под контроля git:
|
Создать файл `.gitignore` для исключения каталогов и файлов из-под контроля Git:
|
||||||
|
|
||||||
[source,sh]
|
[source,sh]
|
||||||
----
|
----
|
||||||
@ -215,7 +254,7 @@ cmake_policy(VERSION 3.0.2..3.7)
|
|||||||
project(cmlib-example-base VERSION 0.2.0 LANGUAGES C CXX)
|
project(cmlib-example-base VERSION 0.2.0 LANGUAGES C CXX)
|
||||||
----
|
----
|
||||||
|
|
||||||
Значение версии следует формировать согласно правилам
|
Значение версии проекта следует формировать согласно правилам
|
||||||
https://semver.org/lang/ru/[семантического версионирования].
|
https://semver.org/lang/ru/[семантического версионирования].
|
||||||
|
|
||||||
Для подключения функций для CMake из библиотеки CMLib, нужно добавить
|
Для подключения функций для CMake из библиотеки CMLib, нужно добавить
|
||||||
@ -223,6 +262,21 @@ https://semver.org/lang/ru/[семантического версиониров
|
|||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
----
|
----
|
||||||
|
###
|
||||||
|
# Обязательные переменные для CMLib
|
||||||
|
###
|
||||||
|
# Название организации
|
||||||
|
set(CMLIB_ORGANIZATION_NAME "Org." CACHE STRING "")
|
||||||
|
|
||||||
|
# Имя автора
|
||||||
|
set(CMLIB_AUTHOR_NAME "John Doe" CACHE STRING "")
|
||||||
|
|
||||||
|
# Почта автора
|
||||||
|
set(CMLIB_AUTHOR_EMAIL "mail@johndoe.com" CACHE STRING "")
|
||||||
|
|
||||||
|
# Краткое описание проекта
|
||||||
|
set(CMLIB_DESCRIPTION "Пример проекта: начало" CACHE STRING "")
|
||||||
|
|
||||||
# В каталоге cmake/cmlib находятся файлы с библиотечными функциями
|
# В каталоге cmake/cmlib находятся файлы с библиотечными функциями
|
||||||
if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmlib)
|
if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmlib)
|
||||||
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/cmlib)
|
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/cmlib)
|
||||||
@ -234,31 +288,14 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/find)
|
|||||||
include(CMLibCommon)
|
include(CMLibCommon)
|
||||||
----
|
----
|
||||||
|
|
||||||
[[variables-cmake]]
|
Значения обязательных переменных, используемых библиотекой CMLib
|
||||||
В каталоге `cmake/etc` требуется создать файл `Variables.cmake`,
|
для архивирования исходных текстов, автоматического создания пакетов,
|
||||||
в котором должны быть определены переменные, используемые
|
генерации документации, следует отредактировать, после чего
|
||||||
библиотекой CMLib для архивирования исходных текстов, автоматического
|
произведённые изменения можно зафиксировать:
|
||||||
создания пакетов, генерации документации:
|
|
||||||
|
|
||||||
[source,cmake]
|
|
||||||
----
|
|
||||||
set(ORGANIZATION_NAME "org")
|
|
||||||
set(AUTHOR_NAME "John Doe")
|
|
||||||
|
|
||||||
set(DOXYGEN_PROJECT_TITLE "Пример проекта (начало)")
|
|
||||||
set(DOXYGEN_GENERATE_LATEX YES)
|
|
||||||
set(DOXYGEN_GENERATE_HTML YES)
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_CONTACT "John Doe <box@mail.domain>")
|
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CMake project example")
|
|
||||||
----
|
|
||||||
|
|
||||||
Произведённые изменения можно зафиксировать:
|
|
||||||
|
|
||||||
[source,sh]
|
[source,sh]
|
||||||
----
|
----
|
||||||
git add cmake/etc/Variables.cmake CMakeLists.txt
|
git commit -m "Подключение библиотеки CMLib" CMakeLists.txt
|
||||||
git commit -m "Подключение библиотеки CMLib"
|
|
||||||
----
|
----
|
||||||
|
|
||||||
Чтобы проверить корректность подключения CMLib, можно выполнить команду:
|
Чтобы проверить корректность подключения CMLib, можно выполнить команду:
|
||||||
@ -337,14 +374,14 @@ sudo apt-get install curl libcurl-dev libboost-all-dev
|
|||||||
|
|
||||||
На этапе конфигурирования проекта можно сгенерировать файл, в который
|
На этапе конфигурирования проекта можно сгенерировать файл, в который
|
||||||
будут записаны собранные значения параметров. В библиотеке CMLib
|
будут записаны собранные значения параметров. В библиотеке CMLib
|
||||||
присутствует функция `cmlib_config_hpp_generate()`, создающая файл
|
присутствует функция `cmlib_generate_private_config_hpp()`, создающая файл
|
||||||
`${CMAKE_BINARY_DIR}/include/cmlib_private_config.hpp`, в который
|
`${CMAKE_BINARY_DIR}/include/cmlib_private_config.hpp`, в который
|
||||||
записывается информация о имени и версии проекта, дате и типе сборки.
|
записывается информация о имени и версии проекта, дате и типе сборки.
|
||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
----
|
----
|
||||||
# Автоматически генерируемый заголовочный файл
|
# Автоматически генерируемый заголовочный файл
|
||||||
cmlib_config_hpp_generate()
|
cmlib_generate_private_config_hpp()
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|
||||||
@ -452,13 +489,14 @@ set(Boost_USE_STATIC_RUNTIME ON)
|
|||||||
find_package(Boost 1.55.0 REQUIRED)
|
find_package(Boost 1.55.0 REQUIRED)
|
||||||
|
|
||||||
# Автоматически генерируемый заголовочный файл
|
# Автоматически генерируемый заголовочный файл
|
||||||
cmlib_config_hpp_generate()
|
cmlib_generate_private_config_hpp()
|
||||||
|
|
||||||
# Каталог с исходными текстами библиотеки
|
# Каталог с исходными текстами библиотеки
|
||||||
add_subdirectory(src/cmlib-example)
|
add_subdirectory(src/cmlib-example)
|
||||||
|
|
||||||
# Документация
|
# Документация
|
||||||
add_subdirectory(cmake/doc)
|
add_breathe_target(doc-breathe)
|
||||||
|
add_doxygen_target(doc-doxygen LATEX YES HTML YES)
|
||||||
|
|
||||||
# Создание вспомогательных символических ссылок
|
# Создание вспомогательных символических ссылок
|
||||||
add_dependencies(cmlib-example create_auxilary_symlinks)
|
add_dependencies(cmlib-example create_auxilary_symlinks)
|
||||||
@ -568,13 +606,14 @@ set(Boost_USE_STATIC_RUNTIME ON)
|
|||||||
find_package(Boost 1.55.0 REQUIRED)
|
find_package(Boost 1.55.0 REQUIRED)
|
||||||
|
|
||||||
# Автоматически генерируемый заголовочный файл
|
# Автоматически генерируемый заголовочный файл
|
||||||
cmlib_config_hpp_generate()
|
cmlib_generate_private_config_hpp()
|
||||||
|
|
||||||
# Приложение
|
# Приложение
|
||||||
add_subdirectory(src/cmlib-example)
|
add_subdirectory(src/cmlib-example)
|
||||||
|
|
||||||
# Документация
|
# Документация
|
||||||
add_subdirectory(cmake/doc)
|
add_breathe_target(doc-breathe)
|
||||||
|
add_doxygen_target(doc-doxygen LATEX YES HTML YES)
|
||||||
|
|
||||||
# Создание вспомогательных символических ссылок
|
# Создание вспомогательных символических ссылок
|
||||||
add_dependencies(cmlib-example create_auxilary_symlinks)
|
add_dependencies(cmlib-example create_auxilary_symlinks)
|
||||||
@ -800,7 +839,7 @@ target_include_directories(${TRGT} PUBLIC $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/
|
|||||||
|
|
||||||
Для поиска необходимых компонентов Qt5 нужно в файле `CMakeLists.txt`,
|
Для поиска необходимых компонентов Qt5 нужно в файле `CMakeLists.txt`,
|
||||||
находящемся в корневом каталоге проекта, перед вызовом функции
|
находящемся в корневом каталоге проекта, перед вызовом функции
|
||||||
`cmlib_config_hpp_generate()` добавить строку:
|
`cmlib_generate_private_config_hpp()` добавить строку:
|
||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
----
|
----
|
||||||
@ -926,7 +965,7 @@ int main( int argc, char** argv )
|
|||||||
git clone --recursive https://git.246060.ru/f1x1t/cmlib-example-app-qt5-gui
|
git clone --recursive https://git.246060.ru/f1x1t/cmlib-example-app-qt5-gui
|
||||||
----
|
----
|
||||||
|
|
||||||
В каталоге `files/data` создать файл описания включаемых ресурсов `icon.qrc`:
|
В каталоге `files/share` создать файл описания включаемых ресурсов `icon.qrc`:
|
||||||
|
|
||||||
[source,xml]
|
[source,xml]
|
||||||
----
|
----
|
||||||
@ -941,7 +980,7 @@ git clone --recursive https://git.246060.ru/f1x1t/cmlib-example-app-qt5-gui
|
|||||||
|
|
||||||
[source,sh]
|
[source,sh]
|
||||||
----
|
----
|
||||||
wget https://git.246060.ru/f1x1t/cmlib-example-app-qt5-gui/raw/branch/master/files/data/icon.png
|
wget https://git.246060.ru/f1x1t/cmlib-example-app-qt5-gui/raw/branch/master/files/share/icon.png
|
||||||
----
|
----
|
||||||
|
|
||||||
Для графического приложения нужно создать файл описания интерфейса
|
Для графического приложения нужно создать файл описания интерфейса
|
||||||
@ -1098,7 +1137,7 @@ set(TRGT_ui
|
|||||||
|
|
||||||
# Файлы описания ресурсов, включаемых в исполняемый файл
|
# Файлы описания ресурсов, включаемых в исполняемый файл
|
||||||
set(TRGT_qrc
|
set(TRGT_qrc
|
||||||
${CMAKE_SOURCE_DIR}/files/data/icon.qrc)
|
${CMAKE_SOURCE_DIR}/files/share/icon.qrc)
|
||||||
###
|
###
|
||||||
# Конец списков файлов
|
# Конец списков файлов
|
||||||
###
|
###
|
||||||
@ -1179,7 +1218,14 @@ git clone --recursive https://git.246060.ru/f1x1t/cmlib-example-app-features
|
|||||||
`dos2unix` и `uncrustify`. Утилита `dos2unix` приводит переводы строк в
|
`dos2unix` и `uncrustify`. Утилита `dos2unix` приводит переводы строк в
|
||||||
файлах к стандарту, принятому в Unix. Утилита `uncrustify` форматирует
|
файлах к стандарту, принятому в Unix. Утилита `uncrustify` форматирует
|
||||||
файлы с исходными кодами на языке C{plus}{plus} в соответствии с правилами,
|
файлы с исходными кодами на языке C{plus}{plus} в соответствии с правилами,
|
||||||
перечисленными в файле `cmake/etc/uncrustify/default.cfg`.
|
перечисленными в файле `cmake/etc/uncrustify/default.cfg`. Можно использовать
|
||||||
|
собственный файл `default.cfg` или подключить подмодуль из репозитория:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
git submodule add https://git.246060.ru/f1x1t/uncrustify-config.git cmake/etc/uncrustify
|
||||||
|
git commit -m "Настройка uncrustify"
|
||||||
|
----
|
||||||
|
|
||||||
IMPORTANT: Настройка правил форматирования помогает другим разработчикам
|
IMPORTANT: Настройка правил форматирования помогает другим разработчикам
|
||||||
придерживаться вашего стиля программирования и отправлять изменения в ваш
|
придерживаться вашего стиля программирования и отправлять изменения в ваш
|
||||||
@ -1194,6 +1240,16 @@ IMPORTANT: Настройка правил форматирования помо
|
|||||||
add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers})
|
add_format_sources(${TRGT} ${TRGT_cpp} ${TRGT_headers})
|
||||||
----
|
----
|
||||||
|
|
||||||
|
Для автоматической проверки исходных текстов на соответствие стандарту
|
||||||
|
форматирования можно к локальному репозиторию подключить скрипт, выполняемый
|
||||||
|
перед фиксацией (`pre-commit`):
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
wget -O - https://git.246060.ru/f1x1t/githooks/archive/master.tar.gz | tar zx --strip-components=1 -C .git/hooks
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
=== Статический анализ исходных кодов
|
=== Статический анализ исходных кодов
|
||||||
|
|
||||||
Для работы с программами на языке C{plus}{plus} используются утилиты,
|
Для работы с программами на языке C{plus}{plus} используются утилиты,
|
||||||
@ -1482,12 +1538,68 @@ make all_unity
|
|||||||
|
|
||||||
=== Документирование кода
|
=== Документирование кода
|
||||||
|
|
||||||
Надо написать.
|
Для документирования кода используются блоки комментариев,
|
||||||
|
оформленные для обработки программой https://www.doxygen.nl[Doxygen].
|
||||||
|
Установка программы:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
sudo apt-get install doxygen
|
||||||
|
----
|
||||||
|
|
||||||
|
Пример комментария:
|
||||||
|
|
||||||
|
[source,c++]
|
||||||
|
----
|
||||||
|
/**
|
||||||
|
* @brief Базовый класс
|
||||||
|
*/
|
||||||
|
class Base {
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Конструктор
|
||||||
|
*/
|
||||||
|
Base();
|
||||||
|
/**
|
||||||
|
* @brief Деструктор
|
||||||
|
*/
|
||||||
|
~Base();
|
||||||
|
/**
|
||||||
|
* @brief Вычисление квадратного корня
|
||||||
|
* @param value Входное значение
|
||||||
|
* @return Квадратный корень от value
|
||||||
|
*/
|
||||||
|
double sqrt(double value);
|
||||||
|
};
|
||||||
|
----
|
||||||
|
|
||||||
|
Поддержка автоматической генерации документации реализована
|
||||||
|
в функциях библиотеки CMLib `add_doxygen_target` и
|
||||||
|
`add_breathe_target`, которые необходимо вызвать в основном
|
||||||
|
файле `CMakeLists.txt` проекта.
|
||||||
|
|
||||||
|
[source,cmake]
|
||||||
|
----
|
||||||
|
# Документация
|
||||||
|
add_doxygen_target(doc-doxygen LATEX YES HTML YES)
|
||||||
|
add_breathe_target(doc-breathe)
|
||||||
|
----
|
||||||
|
|
||||||
|
В результате будут добавлены цели `doc-doxygen` и `doc-breathe`,
|
||||||
|
которые можно использовать после конфигурирования проекта:
|
||||||
|
|
||||||
|
[source,cmake]
|
||||||
|
----
|
||||||
|
make doc-doxygen
|
||||||
|
make doc-breathe
|
||||||
|
----
|
||||||
|
|
||||||
Поддержка документирования кода реализована в функциях
|
|
||||||
`add_doxygen` и `add_breathe`, для исполнения которых
|
|
||||||
добавляются цели `doc-doxygen` и `doc-breathe`.
|
|
||||||
Шаблоны для комментирования файлов, классов и функций
|
Шаблоны для комментирования файлов, классов и функций
|
||||||
можно автоматически расставить в файлах исходных кодов
|
можно автоматически расставить в файлах исходных кодов
|
||||||
исполнением цели `doc-add-comments` при наличии установленной
|
исполнением цели `doc-add-comments` при наличии установленной
|
||||||
программы `uncrustify`.
|
программы `uncrustify`:
|
||||||
|
|
||||||
|
[source,cmake]
|
||||||
|
----
|
||||||
|
make doc-add-comments
|
||||||
|
----
|
||||||
|
@ -25,7 +25,7 @@ sudo setcap cap_sys_ptrace=eip /opt/intel/vtune_profiler/bin64/amplxe-perf
|
|||||||
----
|
----
|
||||||
|
|
||||||
[arabic, start=6]
|
[arabic, start=6]
|
||||||
. Создать образ
|
. Создать образ:
|
||||||
`mksquashfs /opt/intel/* /home/user/intel.sfs -comp xz -Xbcj x86 -all-root -b 512K`
|
`mksquashfs /opt/intel/* /home/user/intel.sfs -comp xz -Xbcj x86 -all-root -b 512K`
|
||||||
. Удалить содержимое каталога `/opt/intel`.
|
. Удалить содержимое каталога `/opt/intel`.
|
||||||
. Примонтировать образ:
|
. Примонтировать образ:
|
||||||
@ -37,3 +37,33 @@ sudo setcap cap_sys_ptrace=eip /opt/intel/vtune_profiler/bin64/amplxe-perf
|
|||||||
source /opt/intel/bin/compilervars.sh intel64
|
source /opt/intel/bin/compilervars.sh intel64
|
||||||
source /opt/intel/vtune_profiler/amplxe-vars.sh
|
source /opt/intel/vtune_profiler/amplxe-vars.sh
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[arabic, start=10]
|
||||||
|
. Создать файл `/etc/sysctl.d/97-vtune.conf`:
|
||||||
|
|
||||||
|
[source,text]
|
||||||
|
----
|
||||||
|
kernel.kptr_restrict=0
|
||||||
|
kernel.perf_event_paranoid=0
|
||||||
|
kernel.yama.ptrace_scope=0
|
||||||
|
----
|
||||||
|
|
||||||
|
[arabic, start=11]
|
||||||
|
. Прочитать его: `sysctl -p /etc/sysctl.d/97-vtune.conf`
|
||||||
|
. Создать группу `vtune` и добавить в неё пользователя:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
groupadd vtune
|
||||||
|
usermod -a -G vtune user
|
||||||
|
----
|
||||||
|
|
||||||
|
[arabic, start=13]
|
||||||
|
. Установить модули ядра для упрощения доступа к отладочной информации:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
sudo apt-get install dkms build-essential linux-headers-generic
|
||||||
|
sudo dpkg -i /opt/intel/vtune-dkms*deb
|
||||||
|
----
|
||||||
|
|
||||||
|
@ -74,8 +74,6 @@ https://ru.wikipedia.org/wiki/FHS[FHS] («стандарт иерархии фа
|
|||||||
| systemLogDirectory() | Полный путь к системному каталогу с журналами работы
|
| systemLogDirectory() | Полный путь к системному каталогу с журналами работы
|
||||||
| executableFileDirectory() | Полный путь к каталогу с исполняемым файлом
|
| executableFileDirectory() | Полный путь к каталогу с исполняемым файлом
|
||||||
| executableFileName() | Имя исполняемого файла
|
| executableFileName() | Имя исполняемого файла
|
||||||
| configFilePath() | Полный путь к файлу настройки
|
|
||||||
| configFileName() | Имя файла настройки
|
|
||||||
| projectName() | Имя подкаталога для проекта
|
| projectName() | Имя подкаталога для проекта
|
||||||
|===
|
|===
|
||||||
|
|
||||||
@ -87,7 +85,7 @@ https://ru.wikipedia.org/wiki/FHS[FHS] («стандарт иерархии фа
|
|||||||
namespace MF = myx::filesystem;
|
namespace MF = myx::filesystem;
|
||||||
|
|
||||||
MF::Paths& paths = MF::Paths::instance();
|
MF::Paths& paths = MF::Paths::instance();
|
||||||
paths.init( QStringLiteral( "project_name" ), QStringLiteral( "conf" ) );
|
paths.init();
|
||||||
qDebug() << paths.systemConstDataDirectory().path();
|
qDebug() << paths.systemConstDataDirectory().path();
|
||||||
----
|
----
|
||||||
|
|
||||||
@ -102,8 +100,9 @@ qDebug() << paths.systemConstDataDirectory().path();
|
|||||||
данных и журналов. Эти значения не зависят от расположения исполняемого файла,
|
данных и журналов. Эти значения не зависят от расположения исполняемого файла,
|
||||||
а определяются в соответствии со значениям переменных окружения `HOME`,
|
а определяются в соответствии со значениям переменных окружения `HOME`,
|
||||||
`TMPDIR`, `XDG_CONFIG_HOME` и `XDG_DATA_HOME`, либо устанавливаются значения,
|
`TMPDIR`, `XDG_CONFIG_HOME` и `XDG_DATA_HOME`, либо устанавливаются значения,
|
||||||
принятые в стандартах. Пример имён каталогов для пользователя `user`
|
принятые в стандартах. Пример имён каталогов для пользователя `user`,
|
||||||
и проекта `project` приведён в таблице.
|
названия организации `org`, названия выполняемой работы `theme` и проекта
|
||||||
|
`project` приведён в таблице.
|
||||||
|
|
||||||
.Стандартные каталоги для текущего пользователя
|
.Стандартные каталоги для текущего пользователя
|
||||||
[cols="4,4m,6m",options="header"]
|
[cols="4,4m,6m",options="header"]
|
||||||
@ -111,10 +110,10 @@ qDebug() << paths.systemConstDataDirectory().path();
|
|||||||
| Назначение каталога | Метод | Значение
|
| Назначение каталога | Метод | Значение
|
||||||
| Домашний каталог | homeDirectory() | /home/user
|
| Домашний каталог | homeDirectory() | /home/user
|
||||||
| Временные файлы | tempDirectory() | /tmp
|
| Временные файлы | tempDirectory() | /tmp
|
||||||
| Файлы настройки | userConfigDirectory() | /home/user/.config/project
|
| Файлы настройки | userConfigDirectory() | /home/user/.config/org-theme/project
|
||||||
| Неизменяемые файлы | userConstDataDirectory() | /home/user/.local/share/project/data
|
| Неизменяемые файлы | userConstDataDirectory() | /home/user/.local/share/org-theme/project/share
|
||||||
| Изменяемые файлы | userVarDataDirectory() | /home/user/.local/share/project/lib
|
| Изменяемые файлы | userVarDataDirectory() | /home/user/.local/share/org-theme/project/var
|
||||||
| Журналы работы | userLogDirectory() | /home/user/.local/share/project/log
|
| Журналы работы | userLogDirectory() | /home/user/.local/share/org-theme/project/log
|
||||||
|===
|
|===
|
||||||
|
|
||||||
=== Общая проверка
|
=== Общая проверка
|
||||||
@ -135,7 +134,7 @@ IMPORTANT: При проверке типов иерархии всегда пр
|
|||||||
|
|
||||||
Если полный путь к исполняемому файлу начинается с `/opt` и
|
Если полный путь к исполняемому файлу начинается с `/opt` и
|
||||||
содержит в себе название текущего проекта, например
|
содержит в себе название текущего проекта, например
|
||||||
`/opt/org/project/bin/application`, то выполняется проверка
|
`/opt/org-theme/project/bin/application`, то выполняется проверка
|
||||||
на наличие сопутствующих системных каталогов. Если они присутствуют,
|
на наличие сопутствующих системных каталогов. Если они присутствуют,
|
||||||
то принимается решение, что окружение в иерархии `/opt` сформировано правильно,
|
то принимается решение, что окружение в иерархии `/opt` сформировано правильно,
|
||||||
иначе делается заключение о том, что файлы всех типов находятся
|
иначе делается заключение о том, что файлы всех типов находятся
|
||||||
@ -147,11 +146,11 @@ IMPORTANT: При проверке типов иерархии всегда пр
|
|||||||
[cols="4,4m,5m",options="header"]
|
[cols="4,4m,5m",options="header"]
|
||||||
|===
|
|===
|
||||||
| Назначение файла / каталога | Метод | Значение
|
| Назначение файла / каталога | Метод | Значение
|
||||||
| Исполняемый файл | executableFilePath() | /opt/org/project/bin/application
|
| Исполняемый файл | executableFilePath() | /opt/org-theme/project/bin/application
|
||||||
| Файлы настройки | systemConfigDirectory() | /opt/org/project/etc
|
| Файлы настройки | systemConfigDirectory() | /opt/org-theme/project/etc
|
||||||
| Неизменяемые файлы | systemConstDataDirectory() | /opt/org/project/files/data
|
| Неизменяемые файлы | systemConstDataDirectory() | /opt/org-theme/project/share
|
||||||
| Изменяемые файлы | systemVarDataDirectory() | /opt/org/project/files/lib
|
| Изменяемые файлы | systemVarDataDirectory() | /opt/org-theme/project/var
|
||||||
| Журналы работы | systemLogDirectory() | /opt/org/project/files/log
|
| Журналы работы | systemLogDirectory() | /opt/org-theme/project/log
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
@ -217,10 +216,10 @@ IMPORTANT: При проверке типов иерархии всегда пр
|
|||||||
|===
|
|===
|
||||||
| Назначение файла / каталога | Метод | Значение
|
| Назначение файла / каталога | Метод | Значение
|
||||||
| Исполняемый файл | executableFilePath() | /home/user/bin/application
|
| Исполняемый файл | executableFilePath() | /home/user/bin/application
|
||||||
| Файлы настройки | systemConfigDirectory() | /home/user/.config/project
|
| Файлы настройки | systemConfigDirectory() | /home/user/.config/org-theme/project
|
||||||
| Неизменяемые файлы | systemConstDataDirectory() | /home/user/.local/share/project/data
|
| Неизменяемые файлы | systemConstDataDirectory() | /home/user/.local/share/org-theme/project/share
|
||||||
| Изменяемые файлы | systemVarDataDirectory() | /home/user/.local/share/project/lib
|
| Изменяемые файлы | systemVarDataDirectory() | /home/user/.local/share/org-theme/project/var
|
||||||
| Журналы работы | systemLogDirectory() | /home/user/.local/share/project/log
|
| Журналы работы | systemLogDirectory() | /home/user/.local/share/org-theme/project/log
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
@ -243,10 +242,10 @@ IMPORTANT: При проверке типов иерархии всегда пр
|
|||||||
|===
|
|===
|
||||||
| Назначение файла / каталога | Метод | Значение
|
| Назначение файла / каталога | Метод | Значение
|
||||||
| Исполняемый файл | executableFilePath() | /home/user/work/project/_build/debug/bin/application
|
| Исполняемый файл | executableFilePath() | /home/user/work/project/_build/debug/bin/application
|
||||||
| Файлы настройки | systemConfigDirectory() | /home/user/work/project/_build/debug/etc/
|
| Файлы настройки | systemConfigDirectory() | /home/user/work/project/_build/debug/etc
|
||||||
| Неизменяемые файлы | systemConstDataDirectory() | /home/user/work/project/_build/debug/files/data
|
| Неизменяемые файлы | systemConstDataDirectory() | /home/user/work/project/_build/debug/share
|
||||||
| Изменяемые файлы | systemVarDataDirectory() | /home/user/work/project/_build/debug/files/lib
|
| Изменяемые файлы | systemVarDataDirectory() | /home/user/work/project/_build/debug/var
|
||||||
| Журналы работы | systemLogDirectory() | /home/user/work/project/_build/debug/files/log
|
| Журналы работы | systemLogDirectory() | /home/user/work/project/_build/debug/log
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,9 +62,9 @@ untracked -> staged: git add
|
|||||||
staged -> unmodified: git commit
|
staged -> unmodified: git commit
|
||||||
unmodified -> modified: редактирование
|
unmodified -> modified: редактирование
|
||||||
modified -> staged: git add
|
modified -> staged: git add
|
||||||
modified -> untracked: git rm --cached
|
modified -> untracked: git rm ~--cached
|
||||||
unmodified -> untracked: git rm --cached
|
unmodified -> untracked: git rm ~--cached
|
||||||
staged -> untracked: git rm --cached
|
staged -> untracked: git rm ~--cached
|
||||||
@enduml
|
@enduml
|
||||||
----
|
----
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ participant remote as "Удалённый репозиторий\n(remote rep
|
|||||||
[-> workspace : <font color=red>Начало работы</font>
|
[-> workspace : <font color=red>Начало работы</font>
|
||||||
activate workspace
|
activate workspace
|
||||||
remote -> local : <font color=red>Получение изменений с сервера</font>\n<b>git fetch</b>
|
remote -> local : <font color=red>Получение изменений с сервера</font>\n<b>git fetch</b>
|
||||||
remote -> local : <font color=red>Обновление подмодулей</font>\n<b>git submodule update --recursive --init</b>
|
remote -> local : <font color=red>Обновление подмодулей</font>\n<b>git submodule update ~--recursive ~--init</b>
|
||||||
workspace <-> local : <font color=red>Просмотр информации</font>\n<b>git status</b>
|
workspace <-> local : <font color=red>Просмотр информации</font>\n<b>git status</b>
|
||||||
workspace <-> local : <font color=red>Переход на ветку master</font>\n<b>git checkout master</b>
|
workspace <-> local : <font color=red>Переход на ветку master</font>\n<b>git checkout master</b>
|
||||||
local -> workspace : <font color=red>Слияние с удалённой веткой</font>\n<b>git merge origin/master</b>
|
local -> workspace : <font color=red>Слияние с удалённой веткой</font>\n<b>git merge origin/master</b>
|
||||||
@ -135,11 +135,45 @@ workspace ->o workspace : <font color=red>Редактирование</font>
|
|||||||
workspace <-> local : <font color=red>Просмотр изменений</font>\n<b>git diff</b>
|
workspace <-> local : <font color=red>Просмотр изменений</font>\n<b>git diff</b>
|
||||||
workspace -> index : <font color=red>Занесение файлов в индекс</font>\n<b>git add</b>
|
workspace -> index : <font color=red>Занесение файлов в индекс</font>\n<b>git add</b>
|
||||||
index -> local : <font color=red>Фиксация изменений</font>\n<b>git commit</b>
|
index -> local : <font color=red>Фиксация изменений</font>\n<b>git commit</b>
|
||||||
local ->o local : <font color=red>Присвоение ветки осмысленного названия</font>\n<b>git branch -m temp branch_name</b>
|
local ->o local : <font color=red>Присвоение ветки осмысленного названия</font>\n<b>git branch -m temp new_task</b>
|
||||||
local ->o local : <font color=red>Переход на ветку</font>\n<b>git checkout branch_name</b>
|
local ->o local : <font color=red>Переход на ветку</font>\n<b>git checkout new_task</b>
|
||||||
remote -> local : <font color=red>Получение изменений с сервера</font>\n<b>git fetch</b>
|
remote -> local : <font color=red>Получение изменений с сервера</font>\n<b>git fetch</b>
|
||||||
local ->o local : <font color=red>Слияние изменений с сервера в текущую ветку (branch_name)</font>\n<b>git merge origin/master</b>
|
local ->o local : <font color=red>Слияние изменений с сервера в текущую ветку (new_task)</font>\n<b>git merge origin/master</b>
|
||||||
local -> remote : <font color=red>Отправка ветки на сервер</font>\n<b>git push origin branch_name</b>
|
local -> remote : <font color=red>Отправка ветки на сервер</font>\n<b>git push origin new_task</b>
|
||||||
|
remote ->] : <font color=red>Создание запроса на слияние</font>
|
||||||
|
deactivate workspace
|
||||||
|
@enduml
|
||||||
|
----
|
||||||
|
|
||||||
|
Альтернативный пример действий, выполняемых пользователем в совместном
|
||||||
|
проекте, приведён на <<workflow-alt,диаграмме>>.
|
||||||
|
|
||||||
|
[[workflow-alt]]
|
||||||
|
[.text-center]
|
||||||
|
.Альтернативная последовательность действий
|
||||||
|
[plantuml]
|
||||||
|
----
|
||||||
|
@startuml
|
||||||
|
skinparam defaultFontSize 24
|
||||||
|
skinparam padding 16
|
||||||
|
|
||||||
|
participant workspace as "Рабочий каталог\n(working dir)"
|
||||||
|
participant index as "Индекс\n(index)" #77FF77
|
||||||
|
participant local as "Локальный репозиторий\n(local repository)" #FF7777
|
||||||
|
participant remote as "Удалённый репозиторий\n(remote repository)" #7777FF
|
||||||
|
|
||||||
|
[-> workspace : <font color=red>Начало работы</font>
|
||||||
|
activate workspace
|
||||||
|
workspace <-> local : <font color=red>Переход на локальную ветку master</font>\n<b>git checkout master</b>
|
||||||
|
remote -> workspace : <font color=red>Слияние с удалённой веткой и обновление рабочего каталога</font>\n<b>git pull</b>
|
||||||
|
workspace <-> local : <font color=red>Создание новой ветки</font>\n<b>git checkout -b new_task</b>
|
||||||
|
workspace ->o workspace : <font color=red>Редактирование</font>
|
||||||
|
workspace <-> local : <font color=red>Просмотр изменений</font>\n<b>git diff</b>
|
||||||
|
workspace -> index : <font color=red>Занесение файлов в индекс</font>\n<b>git add</b>
|
||||||
|
index -> local : <font color=red>Фиксация изменений</font>\n<b>git commit</b>
|
||||||
|
remote -> local : <font color=red>Получение изменений с сервера</font>\n<b>git fetch</b>
|
||||||
|
local ->o local : <font color=red>Слияние изменений с сервера в текущую ветку (new_task)</font>\n<b>git merge origin/master</b>
|
||||||
|
local -> remote : <font color=red>Отправка ветки на сервер</font>\n<b>git push origin new_task</b>
|
||||||
remote ->] : <font color=red>Создание запроса на слияние</font>
|
remote ->] : <font color=red>Создание запроса на слияние</font>
|
||||||
deactivate workspace
|
deactivate workspace
|
||||||
@enduml
|
@enduml
|
||||||
|
@ -15,4 +15,4 @@
|
|||||||
== Оптимизация
|
== Оптимизация
|
||||||
|
|
||||||
* https://www.agner.org/optimize[Agner's software optimization resources]
|
* https://www.agner.org/optimize[Agner's software optimization resources]
|
||||||
|
* https://jjj.de[jj's pages (FXT library and Matters Computational)]
|
||||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 167 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 166 KiB |
BIN
wiki/images/cmake-project/clang-tidy1.png
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
wiki/images/cmake-project/clang-tidy2.png
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
wiki/images/cmake-project/clazy1.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
wiki/images/cmake-project/clazy2.png
Normal file
After Width: | Height: | Size: 166 KiB |
BIN
wiki/images/cmake-project/qtcreator-cmake-option.png
Normal file
After Width: | Height: | Size: 177 KiB |