2016-10-27 4 views
0

Я хочу создать версию, которая заставит configure создавать конкретную версию проекта.Как включить дополнительную версию configure с помощью autotools?

В основном я хочу создать Configure, который принимает параметр командной строки ./configure --enable-FOO который строит с флагом компилятора -Dfoo и некоторыми различными опциями компилятора.

Как это сделать?

+1

Это довольно хороший обзор того, как это сделать: https://autotools.io/autoconf/arguments.html – ptomato

ответ

1

Здесь вы задаете два разных вопроса: во-первых, как добавить аргумент --enable в configure; и во-вторых, как этот аргумент влияет на сборку определенным образом.

Добавление аргумента выполняется с использованием AC_ARG_ENABLE. Он принимает имя функции, строку справки и некоторые необязательные действия. Так, например:

AC_ARG_ENABLE(something, [enable the something feature]) 

(В реальной жизни вы должны использовать AS_HELP_STRING для построения строки помощи здесь.)

Это добавляет --enable-something и --disable-something к configure; и, что важно, добавляет новую переменную enable_something, которая может быть использована для проверки того, что сделал пользователь.

Определение макроса, переданного компилятору C, выполняется с помощью AC_DEFINE. Таким образом, вы можете сделать то, что вы хотите, проверяя новую переменную:

if test "$enable_something" = yes; then 
    AC_DEFINE([SOMETHING], [1], [define to enable the something feature]) 
fi 

Это заставит -DSOMETHING=1 быть переданы компиляции; или, альтернативно, будет излучать #define SOMETHING 1 в ваш config.h.