Compare commits

..

5 Commits

Author SHA1 Message Date
3355f9185e update 2020-04-06 08:49:00 +03:00
1e5b6aa485 update 2020-04-04 11:51:36 +03:00
679bf869e8 Merge branch 'adoc' 2019-08-30 09:31:00 +03:00
1aaacb1df7 cmake 2019-08-29 17:34:57 +03:00
1068f502bb update 2019-07-15 21:47:09 +03:00
5 changed files with 64 additions and 43 deletions

View File

@ -1,8 +1,8 @@
build: build:
pelican -s pelicanconf.py pelican --ignore-cache -s pelicanconf.py
web: web:
pelican -s pelicanconf-web.py pelican --ignore-cache -s pelicanconf-web.py
clean: clean:
rm -rf cache __pycache__ rm -rf cache __pycache__

View File

@ -1,6 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # # -*- coding: utf-8 -*- #
from __future__ import unicode_literals
import os import os
class i18n(object): class i18n(object):

View File

@ -1,6 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # # -*- coding: utf-8 -*- #
from __future__ import unicode_literals
import os import os
class i18n(object): class i18n(object):
@ -13,7 +12,7 @@ class i18n(object):
LANGUAGES = ['ru'] LANGUAGES = ['ru']
NEWSTYLE = True NEWSTYLE = True
__name__ = 'i18n' __name__ = 'pelicanconf.i18n'
def register(self): def register(self):
from pelican.signals import generator_init from pelican.signals import generator_init

View File

@ -17,19 +17,31 @@ Hitchhikers Guide to the CMake]
.... ....
└── cmex └── cmex
├── _build ├── _build
│ ├── Debug │ ├── debug
└── Release │ ├── bin
│ │ ├── etc
│ │ ├── files
│ │ │ ├── data
│ │ │ ├── lib
│ │ │ └── log
│ │ ├── include
│ │ └── lib
│ └── release
├── .git ├── .git
├── .gitlab-ci
├── cmake ├── cmake
│ ├── cmlib │ ├── cmlib
│ ├── doc
│ ├── etc │ ├── etc
│ │ └── uncrustify
│ ├── find │ ├── find
│ └── generators │ └── generators
├── doc ├── doc
├── files ├── files
│ ├── data
│ ├── etc │ ├── etc
│ ├── share │ ├── lib
│ └── var │ └── log
├── l10n ├── l10n
├── src ├── src
│ ├── app │ ├── app
@ -40,23 +52,34 @@ Hitchhikers Guide to the CMake]
Назначение каталогов приведено в таблице. Назначение каталогов приведено в таблице.
[cols="1,3",options="header",] .Назначение каталогов
[cols="2m,4",options="header",]
|=== |===
|Каталог |Назначение |Каталог |Назначение
|`cmex/_build` |Результаты компиляции |`cmex/_build` |Результаты компиляции
|`cmex/_build/Debug` |Результаты компиляции в режиме отладки |`cmex/_build/debug` |Результаты компиляции в режиме отладки
|`cmex/_build/Release` |Результаты компиляции в режиме выпуска |`cmex/_build/debug/bin` | Исполняемые файлы
|`cmex/_build/debug/etc` | Символическая ссылка на каталог `cmex/files/etc`
|`cmex/_build/debug/files/data` | Символическая ссылка на каталог `cmex/files/data`
|`cmex/_build/debug/files/lib` | Символическая ссылка на каталог `cmex/files/lib`
|`cmex/_build/debug/files/log` | Символическая ссылка на каталог `cmex/files/log`
|`cmex/_build/debug/include` | Заголовочные файлы копируемые и генерируемые во время сборки
|`cmex/_build/debug/lib` | Статические и динамические библиотеки
|`cmex/_build/release` |Результаты компиляции в режиме выпуска
|`cmex/.git` |Репозиторий git |`cmex/.git` |Репозиторий git
|`cmex/cmake` |Файлы с дополнительными функциями для CMake |`cmex/cmake` |Файлы с дополнительными функциями для CMake
|`cmex/cmake/cmlib` |Библиотека функций для CMake |`cmex/cmake/cmlib` |Библиотека функций для CMake
|`cmex/cmake/find` |Модули CMake для поиска внешних программ и библиотек |`cmex/cmake/doc` |Правила для автоматической генерации документации
|`cmex/cmake/etc` |Файлы настроек, используемые в CMake |`cmex/cmake/etc` |Файлы настроек, используемые в CMake
|`cmex/cmake/etc/uncrustify` |Файл настройки для программы автоматического форматирования исходных текстов
|`cmex/cmake/find` |Модули CMake для поиска внешних программ и библиотек
|`cmex/cmake/generators` |Генераторы проектов |`cmex/cmake/generators` |Генераторы проектов
|`cmex/doc` |Документация для проекта |`cmex/doc` |Документация для проекта
|`cmake/files` |Каталог для дополнительных файлов |`cmake/files` |Каталог для дополнительных файлов
|`cmake/files/etc` |Каталог для файлов настроек проекта |`cmake/files/etc` |Каталог для файлов настроек проекта
|`cmake/files/share` |Каталог для неизменяемых файлов |`cmake/files/data` |Каталог для неизменяемых файлов
|`cmake/files/var` |Каталог для изменяемых файлов |`cmake/files/lib` |Каталог для изменяемых файлов
|`cmake/files/log` |Каталог для журналов
|`cmex/l10n` |Файлы переводов |`cmex/l10n` |Файлы переводов
|`cmex/src` |Исходные тексты |`cmex/src` |Исходные тексты
|`cmex/src/app` |Исходные тексты программ |`cmex/src/app` |Исходные тексты программ
@ -163,7 +186,7 @@ make
файлами и перечни библиотек, необходимых для компоновки. Сначала файлами и перечни библиотек, необходимых для компоновки. Сначала
производится наличие модуля `PkgConfig`, в котором определена функция производится наличие модуля `PkgConfig`, в котором определена функция
`pkg_check_modules`, которая и осуществляет поиск. Например, для поиска `pkg_check_modules`, которая и осуществляет поиск. Например, для поиска
библиотек `gsl`, `fftw3` и `udev` можно написать: библиотек `gsl`, `fftw3` и `udev` можно написать в файле `CMakeLists.txt`:
[source,cmake] [source,cmake]
---- ----
@ -202,7 +225,7 @@ find_library(MATHGLQT5 mgl-qt5 PATHS /usr/lib /usr/lib/x86_64-linux-gnu)
На этапе конфигурирования проекта можно создать файл, в который будут На этапе конфигурирования проекта можно создать файл, в который будут
записаны параметры, полученные на данной стадии. В библиотеке CMLib записаны параметры, полученные на данной стадии. В библиотеке CMLib
присутствует функция `cmlib_config_hpp_generate()`, создающая файл присутствует функция `cmlib_config_hpp_generate()`, создающая файл
`${CMAKE_BUILD_DIR}/include/config.hpp`, в который записывается `${CMAKE_BUILD_DIR}/include/cmlib_config.hpp`, в который записывается
информация о имени и версии проекта, дате и типе сборки. информация о имени и версии проекта, дате и типе сборки.
[source,cmake] [source,cmake]
@ -255,12 +278,12 @@ set(current_target cmex)
# Список файлов исходных текстов # Список файлов исходных текстов
set(current_target_sources set(current_target_sources
cmex.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cmex.cpp
) )
# Список заголовочных файлов (используется для установки) # Список заголовочных файлов (используется для установки)
set(current_target_headers set(current_target_headers
cmex.hpp ${CMAKE_CURRENT_SOURCE_DIR}/cmex.hpp
) )
add_common_library(TARGET ${current_target} SOURCES ${current_target_sources}) add_common_library(TARGET ${current_target} SOURCES ${current_target_sources})
@ -277,7 +300,7 @@ install(TARGETS ${current_target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIB
if(BUILD_SHARED_LIBS) if(BUILD_SHARED_LIBS)
install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif() endif()
install(FILES ${CMAKE_BINARY_DIR}/include/config.hpp ${current_target_headers} install(FILES ${CMAKE_BINARY_DIR}/include/cmlib_config.hpp ${current_target_headers}
COMPONENT headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${current_target}) COMPONENT headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${current_target})
---- ----
@ -296,7 +319,7 @@ add_subdirectory(src/cmex)
[source,cpp] [source,cpp]
---- ----
#include "compiler_features.hpp" #include "compiler_features.hpp"
#include "config.hpp" #include "cmlib_config.hpp"
#include <iostream> #include <iostream>
@ -304,8 +327,8 @@ add_subdirectory(src/cmex)
int main(int argc, char **argv) { int main(int argc, char **argv) {
std::cout << CMEX_COMPILER_VERSION_MAJOR << std::endl; // Значение из compiler_features.hpp std::cout << CMEX_COMPILER_VERSION_MAJOR << std::endl; // Значение из compiler_features.hpp
std::cout << BUILD_TYPE << std::endl; // Значение из config.hpp std::cout << BUILD_TYPE << std::endl; // Значение из cmlib_config.hpp
std::cout << CMEX_VERSION_STR << std::endl; // Значение из config.hpp std::cout << CMEX_VERSION_STR << std::endl; // Значение из cmlib_config.hpp
std::cout << cmex_init(4) << std::endl; // Функция из внутренней библиотеки std::cout << cmex_init(4) << std::endl; // Функция из внутренней библиотеки
return 0; return 0;
} }
@ -320,7 +343,7 @@ set(current_target cmex_app)
# Список файлов исходных текстов # Список файлов исходных текстов
set(current_target_sources set(current_target_sources
main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
) )
# Цель для создания исполняемого файла # Цель для создания исполняемого файла
@ -354,7 +377,7 @@ install(TARGETS ${current_target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
== Подключение внешнего проекта == Подключение внешнего проекта
В каталоге `cmex/thirdparty` нужно создать каталог `cmext` с проектом, В каталоге `cmex/thirdparty` нужно создать каталог `cmext` с проектом,
состоящим из файлов `cmext.hpp`: состоящим из файла `cmext.hpp`:
[source,c] [source,c]
---- ----
@ -368,7 +391,7 @@ int32_t cmext_init(int32_t i);
#endif #endif
---- ----
`cmext.cpp`: файла `cmext.cpp`:
[source,c] [source,c]
---- ----
@ -379,7 +402,7 @@ int32_t cmext_init(int32_t i = 0) {
} }
---- ----
и `CMakeLists.txt`: и файла `CMakeLists.txt`:
[source,cmake] [source,cmake]
---- ----
@ -440,12 +463,12 @@ target_link_libraries(${current_target} ${CMAKE_BINARY_DIR}/lib/libcmext.a)
Для проверки работоспособности в файле `cmex/src/cmex/main.cpp` нужно Для проверки работоспособности в файле `cmex/src/cmex/main.cpp` нужно
вызвать функцию `cmext_init` из библиотеки, предоставляемой внешним вызвать функцию `cmext_init` из библиотеки, предоставляемой внешним
проектом. Например: проектом. Например, можно заменить его содержимое на:
[source,cpp] [source,cpp]
---- ----
#include "compiler_features.hpp" #include "compiler_features.hpp"
#include "config.hpp" #include "cmlib_config.hpp"
#include <iostream> #include <iostream>
#include <cmext/cmext.hpp> #include <cmext/cmext.hpp>
@ -461,9 +484,9 @@ QTextStream& qStdOut()
int main(int argc, char **argv) { int main(int argc, char **argv) {
// Значение из compiler_features.hpp // Значение из compiler_features.hpp
qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl; qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl;
// Значение из config.hpp // Значение из cmlib_config.hpp
qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl; qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl;
// Значение из config.hpp // Значение из cmlib_config.hpp
qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl; qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl;
// Функция из внутренней библиотеки // Функция из внутренней библиотеки
qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl; qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl;
@ -476,8 +499,8 @@ int main(int argc, char **argv) {
== Qt5 == Qt5
Для поиска необходимых компонентов Qt5 нужно в файл Для поиска необходимых компонентов Qt5 нужно в файл `cmex/CMakeLists.txt`
`cmex/CMakeLists.txt` добавить строки: перед вызовом функции `cmlib_config_hpp_generate()` нужно добавить строку:
[source,cmake] [source,cmake]
---- ----
@ -509,7 +532,7 @@ target_link_libraries(${current_target} Qt5::Core)
[source,cpp] [source,cpp]
---- ----
#include "compiler_features.hpp" #include "compiler_features.hpp"
#include "config.hpp" #include "cmlib_config.hpp"
#include <QtCore> #include <QtCore>
#include <iostream> #include <iostream>
@ -533,9 +556,9 @@ int main(int argc, char **argv) {
} }
// Значение из compiler_features.hpp // Значение из compiler_features.hpp
qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl; qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl;
// Значение из config.hpp // Значение из cmlib_config.hpp
qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl; qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl;
// Значение из config.hpp // Значение из cmlib_config.hpp
qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl; qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl;
// Функция из внутренней библиотеки // Функция из внутренней библиотеки
qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl; qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl;
@ -632,7 +655,7 @@ MyMainWindow::~MyMainWindow() {
[source,cpp] [source,cpp]
---- ----
#include "compiler_features.hpp" #include "compiler_features.hpp"
#include "config.hpp" #include "cmlib_config.hpp"
#include <QtCore> #include <QtCore>
#include <QtWidgets> #include <QtWidgets>
@ -659,9 +682,9 @@ int main(int argc, char **argv) {
// Значение из compiler_features.hpp // Значение из compiler_features.hpp
qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl; qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl;
// Значение из config.hpp // Значение из cmlib_config.hpp
qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl; qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl;
// Значение из config.hpp // Значение из cmlib_config.hpp
qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl; qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl;
// Функция из внутренней библиотеки // Функция из внутренней библиотеки
qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl; qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl;
@ -680,12 +703,12 @@ int main(int argc, char **argv) {
[source,cmake] [source,cmake]
---- ----
set(current_target_sources set(current_target_sources
main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
my_main_window.cpp ${CMAKE_CURRENT_SOURCE_DIR}/my_main_window.cpp
) )
set(current_target_uis set(current_target_uis
my_main_window.ui ${CMAKE_CURRENT_SOURCE_DIR}/my_main_window.ui
) )
---- ----