update
This commit is contained in:
parent
51adf6eb5a
commit
d07e6a66f8
@ -1 +1 @@
|
|||||||
Subproject commit ce6b18660a933855dbe996fc5b5d3d0ac1c25223
|
Subproject commit 228f4e026bcf020b4efcbc1684e2c67ff38ee4e5
|
@ -132,7 +132,8 @@ git submodule add git@git.246060.ru:f1x1t/uncrustify-config.git cmake/etc/uncrus
|
|||||||
git commit -a -m "Начало проекта"
|
git commit -a -m "Начало проекта"
|
||||||
----
|
----
|
||||||
|
|
||||||
Отправить изменения в проекте на сервер и сделать ветку `master` основной:
|
Отправить изменения в проекте на сервер и сделать ветку `master` основной
|
||||||
|
(можно пропустить):
|
||||||
|
|
||||||
[source,sh]
|
[source,sh]
|
||||||
----
|
----
|
||||||
@ -281,52 +282,54 @@ git commit -m "Подключение библиотеки CMLib"
|
|||||||
|
|
||||||
== Поиск системных библиотек
|
== Поиск системных библиотек
|
||||||
|
|
||||||
Системные библиотеки можно искать с помощью программы `pkgconfig`,
|
Поиск программ, библиотек и заголовочных файлов, установленных в системе, можно
|
||||||
которая хранит базу данных параметров, включающую пути к заголовочным
|
выполнять с помощью программы https://en.wikipedia.org/wiki/Pkg-config[`pkg-config`]
|
||||||
файлами и перечни библиотек, необходимых для компоновки. Сначала
|
или функции CMake `find_package`. В любом случае для указания того,
|
||||||
производится наличие модуля `PkgConfig`, в котором определена функция
|
что наличие искомого объекта обязательно для сборки, используется
|
||||||
`pkg_check_modules`, которая и осуществляет поиск. Например, для поиска
|
параметр `REQUIRED`.
|
||||||
библиотек `gsl`, `fftw3` и `udev` можно написать в файле `CMakeLists.txt`:
|
|
||||||
|
=== Поиск с помощью программы `pkg-config`
|
||||||
|
|
||||||
|
Программа `pkg-config` хранит базу данных параметров (обычно в каталогах
|
||||||
|
`/usr/share/pkgconfig`, `/usr/lib/pkgconfig` и `/usr/lib/x86_64-linux-gnu/pkgconfig`),
|
||||||
|
содержащую флаги компиляции для поиска заголовочных файлов и компоновки
|
||||||
|
библиотек, установленных в систему. Для использования в CMake сначала
|
||||||
|
необходимо выполнить проверку наличия программы `pkg-config` в системе
|
||||||
|
и подключить определённую в модуле `PkgConfig` функцию `pkg_check_modules`.
|
||||||
|
Например, для поиска библиотек `gsl`, `fftw3` и `udev` можно написать
|
||||||
|
в файле `CMakeLists.txt`:
|
||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
----
|
----
|
||||||
# Поиск библиотек с помощью pkgconfig
|
# Поиск библиотек с помощью pkgconfig
|
||||||
find_package(PkgConfig)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(GSL REQUIRED gsl)
|
pkg_check_modules(GSL REQUIRED gsl)
|
||||||
pkg_check_modules(FFTW3 REQUIRED fftw3)
|
pkg_check_modules(FFTW3 REQUIRED fftw3)
|
||||||
pkg_check_modules(UDEV udev)
|
pkg_check_modules(UDEV udev)
|
||||||
----
|
----
|
||||||
|
|
||||||
Если системная библиотека поставляется без файла описания для
|
=== Поиск с помощью функции `find_package`
|
||||||
`pkgconfig`, то для её поиска может быть написан специальный модуль для
|
|
||||||
`CMake`, который вызывается функцией `find_package`. Кроме того функция
|
Если системная библиотека поставляется без файла описания для `pkg-config`
|
||||||
`find_package` может возвращать дополнительные значения, например, пути
|
или необходимо произвести более сложный поиск, например, включающий поиск
|
||||||
к исполняемым файлам.
|
исполняемого файла, то может быть написан специальный модуль для `CMake`,
|
||||||
|
который вызывается функцией `find_package`. Примеры вызова функции:
|
||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
----
|
----
|
||||||
# Поиск с помощью функции find_package
|
# Поиск с помощью функции find_package
|
||||||
find_package(LibXml2)
|
find_package(LibXml2)
|
||||||
find_package(CURL)
|
find_package(CURL REQUIRED)
|
||||||
----
|
----
|
||||||
|
|
||||||
Если для библиотеки нет модуля, выполняющего её поиск, то можно
|
|
||||||
произвести поиск с помощью функции `find_library`. Например,
|
|
||||||
|
|
||||||
[source,cmake]
|
|
||||||
----
|
|
||||||
# Поиск библиотеки с помощью функции find_library
|
|
||||||
find_library(MATHGL mgl PATHS /usr/lib /usr/lib/x86_64-linux-gnu)
|
|
||||||
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/cmlib_config.hpp`, в который записывается
|
`${CMAKE_BINARY_DIR}/include/cmlib_private_config.hpp`, в который
|
||||||
информация о имени и версии проекта, дате и типе сборки.
|
записывается информация о имени и версии проекта, дате и типе сборки.
|
||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
----
|
----
|
||||||
@ -334,6 +337,10 @@ find_library(MATHGLQT5 mgl-qt5 PATHS /usr/lib /usr/lib/x86_64-linux-gnu)
|
|||||||
cmlib_config_hpp_generate()
|
cmlib_config_hpp_generate()
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
== Базовая библиотека
|
== Базовая библиотека
|
||||||
|
|
||||||
В файле `cmex/CMakeLists.txt` должна быть строка, включающая поиск файла
|
В файле `cmex/CMakeLists.txt` должна быть строка, включающая поиск файла
|
||||||
|
Loading…
Reference in New Issue
Block a user