Использование app_helper для написания SConstruct
В проекте AWTK есть файл SConstruct, который является скриптом компиляции для Scons. Когда разработчику необходимо использовать библиотеки зависимостей или выполнить пользовательскую предварительную обработку в программе, ему нужно следовать синтаксису Python и написать файл SConstruct. Это довольно трудоёмкая задача.
Чтобы упростить написание SConstruct, AWTK извлекает некоторые общие функции в awtk/scripts/app_helper_base.py и импортирует app_helper_base.py в scripts/app_helper.py в каталоге проекта. Таким образом, разработчики могут напрямую вызывать эти функции в файле SConstruct проекта.
1. Связанные функции
app_helper.py предоставляет функции, перечисленные в таблице ниже. Для получения дополнительной информации о том, как их использовать, обратитесь к awtk/docs/app_helper_usage.md.
Функция | Описание |
---|---|
add_deps | Добавляет сторонние библиотеки зависимостей |
add_libs | Добавляет библиотеки |
set_dll_def | Устанавливает имя файла def для динамической библиотеки |
add_cpppath | Добавляет путь поиска заголовков |
add_libpath | Добавляет путь поиска библиотек |
add_cxxflags | Добавляет параметры предварительной обработки C++ |
add_ccflags | Добавляет параметры предварительной обработки C |
add_linkflags | Добавляет параметры компоновки |
add_platform_libs | Добавляет необходимые библиотеки для конкретной платформы |
add_platform_cpppath | Добавляет необходимый путь поиска заголовков для конкретной платформы |
add_platform_libpath | Добавляет необходимый путь поиска библиотек для конкретной платформы |
add_platform_ccflags | Добавляет необходимые параметры предварительной обработки C для конкретной платформы |
add_platform_cxxflags | Добавляет необходимые параметры предварительной обработки C++ для конкретной платформы |
add_platform_linkflags | Добавляет необходимые параметры компоновки для конкретной платформы |
Реализация функций в таблице находится в awtk/scripts/app_helper_base.py.
2. Пример
Для использования app_helper.py сначала необходимо импортировать его в SConstruct, затем вызвать функцию Helper для получения объекта helper, и, наконец, использовать объект helper для вызова функций из предыдущего раздела.
Например, если в проекте используется библиотека SQLite (движок базы данных SQL), статическая библиотека и структура каталогов заголовков:
Проектный каталог/
|-- 3rd/sqlite3/sqlite3.h
|-- lib/sqlite3.lib
В файле SConstruct в каталоге проекта вызовите функцию add_libs(), чтобы добавить зависимость sqlite3.lib, и функцию add_cpppath(), чтобы добавить путь поиска заголовка этой зависимости:
import os
import scripts.app_helper as app
helper = app.Helper(ARGUMENTS);
helper.add_libs(['sqlite3']).add_cpppath([os.path.join(helper.APP_ROOT, '3rd')]).call(DefaultEnvironment)
SConscript(['src/SConscript', '3rd/sqlite3/SConscript'])
Обратите внимание на следующее:
3. Специальные функции
При вызове функций, предоставляемых app_helper.py, обычно требуется передать только путь к файлу или каталогу. Однако некоторые функции требуют передачи дополнительных параметров, включая все функции, начинающиеся с add_deps и add_platform_. Ниже приведены примеры:
(1) Функция add_deps() имеет следующий прототип:
def add_deps(self, DEPENDS_LIBS):
Вызовите функцию add_deps(), чтобы добавить зависимости сторонних библиотек:
DEPENDS_LIBS = [
{
"root" : '../awtk-restful-httpd',
'shared_libs': ['httpd'],
'static_libs': []
}
]
helper.add_deps(DEPENDS_LIBS)
Здесь "root" — это путь к сторонней библиотеке, поддерживающий относительные и абсолютные пути; "shared_libs" — динамические библиотеки; "static_libs" — статические библиотеки.
(2) Функция add_platform_libs() имеет следующий прототип:
def add_platform_libs(self, plat, PLATFORM_LIBS)
Вызовите функцию add_platform_libs(), чтобы добавить библиотеку ws2_32.lib для платформы Windows:
helper.add_platform_libs('Windows', ['ws2_32'])
Параметр plat представляет конкретную платформу, которая может принимать значения Windows, Linux и Darwin, представляющие соответственно платформу Windows, платформу Linux и платформу macOS. Параметр PLATFORM_LIBS представляет имя библиотеки. Использование других функций, начинающихся с add_platform_, аналогично.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )