Быстрое начало

Я думаю, что лучший способ начинать с sdl компонента, который довольно мал.

Давайте представим, что вы хотите написать gb.xyz компонент. Этот компонент:

Переменная $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
...

Вот и все. Теперь вы должны получить новый компонент :-)