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