2014-12-11 2 views
0

Я обновляю проект для использования autotools и поддерживаю обратную совместимость с предыдущими версиями, я хотел бы, чтобы пользователь мог запустить ./configure --foo=bar для установки опции сборки.Создать пользовательские ./configure аргументы командной строки

Основываясь на чтение документации, это выглядит, как я мог настроить ./configure --enable-foo, ./configure --with-foo или ./configure foo=bar без каких-либо проблем, но я ничего позволяя желаемое поведение (в частности, имеющий двойной тир -- перед опцией) не вижу.

Любые предложения?

ответ

2

Там нет никакого способа, я знаю, что делать это в configure.ac. Вам придется заплатить configure. Это можно сделать, запустив скрипт исправления в bootstrap.sh после запуска autoreconf. Вы должны добавить свой вариант в цикл обработки ac_option. Корпус для --x выглядит многообещающим, чтобы скопировать или заменить, чтобы ввести новый параметр, что-то вроде:

--foo=*) 
     my_foo=$ac_optarg ;; 

Там также некоторый код, который удаляет командной строки арг когда configure иногда необходимо повторно вызывается. Вам будет необходимо определить, следует ли удалить --foo или нет. Я думаю, что это, вероятно, почему они этого не позволяют.

Если бы это был я, я попробовал бы и лоббировал бы AC_ARG_WITH (например, --with-foo=bar). Кажется, что гораздо меньше работы.

+0

Спасибо! Я пошел вперед и просто использовал AC_ARG_WITH. – profzoom

-1

для того, чтобы сделать это, вы должны добавить к вашему configure.ac что-то вроде этого:

# Enable debugging mode 
AC_ARG_ENABLE(debug, 
    AC_HELP_STRING([--enable-debug],[Show a lot of extra information when running]), 
    AM_CPPFLAGS="$AM_CPPFLAGS -DDEBUG" 
    debug_messages=yes, 
    debug_messages=no) 

AC_SUBST(AM_CPPFLAGS) 
AC_SUBST(AM_CXXFLAGS) 

echo -e "\n--------- build environment ----------- 
Debug Mode  : $debug_messages" 

Это лишь простой пример, чтобы добавить, например, --enable-отладки, он установит DEBUG константа в файле config.h. , то ваш код должен что-то вроде этого:

#include "config.h" 
#ifdef DEBUG 
    // do debug 
#else 
    // no debug 
#endif 
+0

Да, я читал о AC_ARG_ENABLE и AC_ARG_WITH. Однако это не то, что я ищу. Я не хочу, чтобы опция начиналась с '' enable'' или '' with'', и я хотел бы, чтобы пользователь мог передать произвольную строку. – profzoom

+0

Итак, что вам создавать пользовательские записи? –

 Смежные вопросы

  • Нет связанных вопросов^_^