2012-03-24 2 views
1

У меня есть небольшая проблема с Autoconf, я знаю, что вы можете использовать configure.ac, чтобы добавить некоторые предопределенные к configure.h, но есть способ, чтобы сделать что-то вроде этого:автоконфинурация и ./configure переменных

в одном из моих заголовков у меня есть

#ifndef SIZE 
#define SIZE 4 
#endif 

теперь я хочу, чтобы иметь возможность, что если я призываю

./configure 

создает Makefile и размер 4, но когда кто-то делает

./configure --block-size=num 

размер будет установлен в NUM, предпочтительно я хочу сделать это без config.h, я просто хочу, чтобы он что-то добавить к Makefile, поэтому компиляция будет вызываться с

-DSIZE=num 
+2

Другой вариант заключается только в том, чтобы зафиксировать факт, что пользователи могут запускать './configure CPPFLAGS = -DSIZE = 4'. И это не требует изменений в настройках. – adl

ответ

4
# configure.ac 
AC_ARG_WITH([blocksize], 
      AS_HELP_STRING([The desired blocksize [[default: 4]]]), 
      [blocksize="$withval"], [blocksize=4]) 
my_CPPFLAGS="-DSIZE=$blocksize" 
AC_SUBST([my_CPPFLAGS]) 

Довольно просто.

# Makefile.am 
AM_CPPFLAGS = ${my_CPPFLAGS} 
+0

Вместо my_CPPFLAGS вы можете назначить AM_CPPFLAGS в файле configure.ac (и AC_SUBST ([AM_CPPFLAGS])) и не вносить изменения в Makefile.am –