1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zlgopen-awtk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
app_helper_usage.md 7.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:52 91e8897

Использование 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'])

Обратите внимание на следующее:

  • В этом примере статическая библиотека sqlite3.lib помещается в папку lib в каталоге проекта, и AWTK по умолчанию добавляет этот путь к пути поиска библиотеки. Если разработчик помещает статическую библиотеку в другой путь, он также должен вызвать функцию add_libpath() для добавления этого пути к пути поиска библиотеки.
  • helper поддерживает цепные вызовы, и функция call должна быть вызвана последней.

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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zlgopen-awtk.git
git@api.gitlife.ru:oschina-mirror/zlgopen-awtk.git
oschina-mirror
zlgopen-awtk
zlgopen-awtk
master