Библиотека platform
Библиотека platform
содержит следующие команды:
initialize_platform()
– команда для инициализации библиотекиplatform
.Команда
initialize_platform()
может вызываться с параметромFORCE_STATIC
, который включает принудительную статическую компоновку исполняемых файлов:- По умолчанию, если тулчейн в составе KasperskyOS SDK поддерживает динамическую компоновку, то команда
initialize_platform()
делает так, что для сборки всех исполняемых файлов, заданных черезCMake
-командыadd_executable()
, флаг-rdynamic
используется автоматически. - При вызове
initialize_platform (FORCE_STATIC)
в корневом файлеCMakeLists.txt
тулчейн, поддерживающий динамическую компоновку, выполняет статическую компоновку исполняемых файлов.
Команда
initialize_platform()
может вызываться с параметромNO_NEW_VERSION_CHECK
, который отключает проверку наличия обновлений SDK и передачу версии SDK на сервер "Лаборатории Касперского".Чтобы отключить проверку наличия обновлений SDK и передачу данных версии SDK на сервер Kaspersky при сборке решения используйте следующий вызов:
initialize_platform(NO_NEW_VERSION_CHECK)
. Подробнее о политике предоставления данных см. "Предоставление данных".- По умолчанию, если тулчейн в составе KasperskyOS SDK поддерживает динамическую компоновку, то команда
project_static_executable_header_default()
– команда для включения принудительной статической компоновки исполняемых файлов, заданных через последующиеCMake
-командыadd_executable()
в одном файлеCMakeLists.txt
. Тулчейн, поддерживающий динамическую компоновку, выполняет статическую компоновку этих исполняемых файлов.platform_target_force_static()
– команда для включения принудительной статической компоновки исполняемого файла, заданного черезCMake
-командуadd_executable()
. Тулчейн, поддерживающий динамическую компоновку, выполняет статическую компоновку этого исполняемого файла. Например, если вызываютсяCMake
-командыadd_executable(client "src/client.c")
иplatform_target_force_static(client)
, то для программыclient
выполняется статическая компоновка.project_header_default()
– команда для указания флагов компиляции.Параметры команды задаются в виде пар, состоящих из флага компиляции и его значения:
"FLAG_1:VALUE_1"
"FLAG_2:VALUE_2"
..."FLAG_N:VALUE_N"
.CMake
-библиотекаplatform
преобразует эти пары в параметры компилятора.
При использовании команд initialize_platform(FORCE_STATIC)
, project_static_executable_header_default()
и platform_target_force_static()
могут возникать ошибки компоновки, если статический вариант требуемых библиотек отсутствует (например, не собран или не поставлен в составе KasperskyOS SDK). Но даже при наличии статического варианта требуемых библиотек эти ошибки могут возникать из-за того, что при использовании команд initialize_platform(FORCE_STATIC)
, project_static_executable_header_default()
и platform_target_force_static()
система сборки по умолчанию может выполнять поиск динамического варианта требуемых библиотек, а не статического, как ожидается. Чтобы избежать ошибок, нужно, во-первых, обеспечить наличие статического варианта требуемых библиотек, во-вторых, настроить систему сборки на поиск статических библиотек (для некоторых библиотек этой возможности может не быть) либо явно задавать компоновку со статическими библиотеками.
Примеры настройки системы сборки на поиск статических библиотек:
Пример, в котором явно задана компоновка со статической библиотекой:
Подробнее об использовании динамических библиотек см. "Использование динамических библиотек".
Эти команды используются в файлах CmakeLists.txt
для программы Einit и прикладных программ.