Я думаю, что лучший способ начинать с sdl компонента, который довольно мал.
Давайте представим, что вы хотите написать gb.xyz
компонент. Этот компонент:
libxyz.so
и файле включения xyz.h
.
Переменная $ROOT
- это директория, где вы распакуете Gambas
исходный пакет.
1. Сделайте копию $ROOT/src/lib/sdl
директории (с ее содержимым) и назовите ее gb.xyz
.
2. Удалите исходные файлы, но оставьте main.c
и main.h
. Вы напишите ваши собственные main.c
и main.h
, модифицировав их.
3. Отредактируйте $ROOT/src/lib/xyz/Makefile.am
файл и заполните его, как нужно, как объясняется there.
Вы получите что-нибудь подобное этому:
INCLUDES = -I$(top_srcdir)/src/share @XYZ_INC@
EXTRA_DIST = *.component
pkglib_LTLIBRARIES = lib.gb.xyz.la
lib_gb_xyz_la_LIBADD = @XYZ_LIB@
lib_gb_xyz_la_LDFLAGS = @LD_FLAGS@
lib_gb_xyz_la_SOURCES = main.h main.c myFirstClass.h myFirstClass.c mySecondClass.h mySecondClass.c ...
install-exec-local:
@cp -f *.component $(DESTDIR)$(pkglibdir)
4. Переименуйте $ROOT/src/lib/xyz/lib.gb.sdl.component
файл как lib.gb.xyz.component
и отредактируйте его.
Будьте внимательны, этот файл должнен быть в кодировке UTF-8.
[Component]
Key=gb.xyz
Name=The xyz component
Author=You
Alpha=1
5. Отредактируйте $ROOT/src/lib/Makefile.am
файл (расположенный на одну директорию выше) и измените первую строку,
чтобы добавить ссылку на вновь созданную поддиректорию.
SUBDIRS = debug eval db compress @QT_DIR@ @NET_DIR@ @SDL_DIR@ @VB_DIR@ @XYZ_DIR@
6. Отредактируйте $ROOT/configure.in
файл и добавьте следующие материалы:
...
GB_COMPONENT(
xyz,
XYZ,
[XYZ component],
[GB_FIND(xyz.h, /usr/local /usr, include xyz*/include include/xyz*)],
[GB_FIND(libxyz.$SHLIBEXT, /usr/local /usr, lib xyz*/lib lib/xyz*)],
[$C_LIB $THREAD_LIB -lxyz],
[$THREAD_INC])
...
7. В конце $ROOT/configure.in
файла
измените AC_OUTPUT
макрос:
...
dnl ---- Create makefiles
AC_OUTPUT( Makefile src/Makefile src/share/Makefile src/comp/Makefile src/exec/Makefile src/lib/Makefile ...
src/lib/compress/Makefile src/lib/compress/zlib/Makefile src/lib/compress/bzlib2/Makefile src/lib/xyz/Makefile )
8. Откройте терминал, войдите в корневую директорию пакета и введите:
$ ./reconf
$ ./configure
...
$ make
...
Все будет скомпилировано... если вы не наделали ошибок, конечно :-)
9. Чтобы проверить компонент, вы должны сделать три символьные ссылки от ./src/lib/xyz директории на директорию устанвки Gambas. Как root, конечно:
$ su
...
# ln -s /usr/lib/gambas/lib.gb.xyz.component $ROOT/src/lib/xyz/lib.gb.xyz.component
# ln -s /usr/lib/gambas/lib.gb.xyz.so $ROOT/src/lib/xyz/.libs/lib.gb.xyz.so
# ln -s /usr/lib/gambas/lib.gb.xyz.la $ROOT/src/lib/xyz/lib.gb.xyz.la
10. Теперь вы должны создать описание файлов
компонента, используя gbi
команду. Вы должны делать это
каждый раз, когда модифицируете интерфейс вашего компонента.
$ gbi -a
...
Вот и все. Теперь вы должны получить новый компонент :-)