Posterous theme by Cory Watilo

autotools

Сегодня попытался воспользоваться autoconf и automake для автоматической генерации Makefile для сборки проекта. Исходники на C++, проект довольно старый. Итак, вот как выглядит схема работы GNU build system:
Media_httpuploadwikim_eafbi
И теперь маленький туториал по шагам. Допустим, проект лежит в директории /project. Помещаем в папку /project/src. Теперь в /project создаем файл Makefile.am со следующей начинкой: [cc lang="bash"] SUBDIRS=src [/cc] Это сообщит где искать дополнительные make-файлы. В директории /project/src создаем Makefile.am следующего содержания: [cc lang="bash"] helloprgdir=../ helloprg_PROGRAMS=hello hello_SOURCES=hello.c [/cc] Первая строка - куда копировать бинарники при make install. Вторая - имя программы Третья - исходники, которые будут компилироваться. Также все упомянутые тут файлы будут собраны при make dist. Но об этом советую почитать подробнее в доке. Ок, теперь можно запустить в корне проекта команду [cc lang="bash"]autoscan[/cc] Она создаст нужный нам файл - configure.scan. Переименовываем его в configure.ac и правим: [cc lang="bash"] AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) [/cc] к примеру на [cc lang="bash"] AC_INIT(HELLO WORLD, 0.1, bugs at example.com) [/cc] Также надо добавить директиву [cc lang="text"] AM_INIT_AUTOMAKE [/cc] чтобы утилиты создали Makefile. Также советуют заменить AC_CONFIG_HEADER на AM_CONFIG_HEADER. Теперь выполним [cc lang="bash"] aclocal [/cc] Он создаст m4 скрипт для выполнения будущего configure. [cc lang="bash"] autoheader [/cc] создаст необходимые заголоки для будущего configure. Наконец, выполним [cc lang="bash"] automake -ac [/cc] -a добавит отсутствующие файлы, -c скопирует их вместо создания симлинки. А теперь смотрим какие файлы он не создал: NEWS, AUTHORS, ChangeLog, README. Для дальнейшей сборки надо их создать. И теперь выполняем [cc lang="bash"] autoconf [/cc] Если все прошло успешно - то теперь проект готов, можно делать ./configure && make. А кроме того make dist соберет аккуратный пакетик-архивчик со всеми исходниками и скриптами для сборки. Ссылки: autotoolset The-GNU-Build-System Tutorial ЗЫ: я делал это впервые, потому замечаниям буду только рад. ЗЫ2: задался вопросом - а как бы не описывать руками какие файлы собирать, а использовать некий хитрый макрос для того чтоб оно съело все исходники само?
| Viewed
times
Filed under: