Первое приложения с automake

В этой стетье речь пойдет о том, как создать скрипт .configure для собственного приложения. Ведь мы хотим быть похожи на крутые ПОшины из мира свободного ПО.
Сначала, как полагается, создадим для всех этих делоп папку. В ней создадим папку src для исходников. Собственно исходник у нас будет один! Ведь мы сделаем всего навсего helloworld.

Вот так он выглядит:

#include <config.h>
#include <stdio.h>
              
int  main (void) {
    puts ("Hello World!");
    puts ("This is " PACKAGE_STRING ".");
    return 0;
}

Вполне обычный такой хелло ворд.

Для использования automake нам нужен будет скрипт configure.ac. Но чтобы его написать нужно что-то знать. А поскольку мы нифига не знаем, создаем его автоматически:

$ autoscan

Эта утилита просканирует файлы, которые есть в наличии и исходя из собственных соображений создаст файл configure.scan. Его то мы и переименуем в configure.ac:

$ mv configure.scan configure.ac

Теперь его немножно подредактируем. Укажем в строке:

AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])

Что-то свое:

AC_INIT([blablacode_auto_helloworld], [0.01], [bugs@blablacode.ru])

После AC_INIT добавим

AM_INIT_AUTOMAKE([foreign -Wall -Werror])

А перед AC_OUTPUT:

AC_CONFIG_FILES([Makefile src/Makefile])

Теперь нужно рассказать автоматизированным утилитам, как компилировать наш проект. Для этого нужно создать файлы Makefile.am в каждой поддиректории проекта и в корне.

Makefile.am:

SUBDIRS = src

Тут мы просто указали, что у нас есть папка src.
src/Makefile.am:

bin_PROGRAMS = hello
hello_SOURCES = hello.c

Тут мы указали, что для сборки бинарника нам нужен всего один исходник с названием hello.c.
Если хотим добавить библиотеку libcrypt, пишем такое:

hello_LDADD = -lcrypt

Аналогично и все остальные.
Теперь дело за малым.
Выполняем такие команды:

$ aclocal
$ autoheader
$ automake --add-missing
$ autoconf

Теперь все готово. Можно собирать:

$ ./configure
$ make

Для того, чтобы создать архивчик с исходниками выполняем такое:

$ make dist

По окончании процедуры компиляции можем запустить, удостоверится:

$ hello 
Hello World!
This is blablacode_auto_helloworld 0.01.

Вот такие дела.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий