[html]<img src="https://sourceforge.net/p/app-emulation-sk-tests/code/ci/main/tree/src/images/autotools.gif?format=raw" width="100%" />[/html]
Почему люди используют autotools?
autotools поддерживают:
- подготовку ПО для установки в разные директории (PREFIX);
- корректную обработку зависимостей между .h-файлами.
- кросс-компиляцию;
- сборку вне директории с исходными текстами (out of tree builds);
они известны людям.
Конфигурация (поддержка PREFIX) -> Компиляция (выбор тулчейна) -> Установка (поддержка DESTDIR)
autoconf
configure.ac (bash + m4 macros) -> ./configure
automake
Makefile.am -> Makefile.in
autoheader
-> config.h.in
aclocal
Нагенерированные файлы (configure, Makefile.in, Makefile) редактировать руками не надо!
./configure
Makefile.in -> Makefile
config.h.in -> config.h
config.log
опции, переменные окружения
Стандартные цели:
distclean, dist, clean, check, install-strip, install, installcheck, all, uninstall
prefix (/usr/local)
execprefix ($prefix)
bindir ($execprefix/bin)
libdir ($execprefix/lib)
includedir ($prefix/include)
datarootdir ($prefix/share)
data ($datarootdir)
man ($datarootdir/man)
info ($datarootdir/info)
sysconfdir ($prefix/etc)
--<option> для каждой директории
например, ./configure --prefix=~/sys/
Стандартные переменные окружения:
CC, команда запускающая компилятор Си
CFLAGS, переменная со списком параметров командной строки компилятору Си
CXX, команда запускающая компилятор C++
CXXFLAGS, переменная со списком параметров командной строки компилятору C++
LDFLAGS, переменная со списком параметров командной строки утилите ld
и другие, см. ./configure --help
Три типа систем:
build, на какой платформе происходит сборка
host, на какой платформе программа будет работать
target, на какую платформу программа будет ориентироваться в работе (только для программ собираемого тулчейна)
--build, --host, --target параметры для скрипта ./configure
значения для этих параметров это "тройки, описывающие платформу"
Отредактировано Лис (2023-03-12 19:55:52)