2016-03-08 6 views
1

Я хочу использовать флаги компиляции моего C проекта:IFDEF в Makefile.am

в configure.ac определяю модель по умолчанию

AC_ARG_ENABLE(model, [AS_HELP_STRING([--enable-model], 
    [specify which Model will be used; (default --enable-model=98]))],, 
    [AC_DEFINE(MODEL_98)]) 

AS_IF([test "x$enable_model" = "x98"], [AC_DEFINE(MODEL_98)]) 
AS_IF([test "x$enable_model" = "x181"], [AC_DEFINE(MODEL_181)]) 

, а затем в Makefile.am я использовать эти переменные как следующие:

proj_SOURCES =   \ 
    ../bac.c  \ 
    ../conf.c    \ 
    ../cw.c    \ 

ifdef $(MODEL_98) 
proj_SOURCES +=         \ 
    ../dm/98/interfaces.c    \ 
    ../dm/98/device.c     \ 
    ../dm/98/ging.c   \ 
    ../dm/98/wa.c     

endif 
ifdef $(MODEL_181) 
proj_SOURCES +=         \ 
    ../dm/181/fi.c 
endif 

но проект не скомпилирован !!

, что не так в моем Makefile.am

Благодарности

+0

Похоже, что половина ваших многочисленных вопросов принимается. Неужели так много слабых ответов? – chux

ответ

3

Для того, чтобы использовать переменные в Makefiles, вам нужно использовать automake версии, то есть AM_* не AC_.

Я бы использовал AM_CONDITIONAL. Для примера:

В configure.ac:

AC_ARG_ENABLE([model], 
       [AS_HELP_STRING([--enable-model], 
       [specify which Model will be used; (default --enable-model=98]))], 
       [enable_model=$enableval], 
       [enable_model=98]) 

AM_CONDITIONAL([MODEL_98], [test "x$enable_model" = "x98"]) 
AM_CONDITIONAL([MODEL_181], [test "x$enable_model" = "x181"]) 

Это означает, что мы можем назвать Configure, чтобы включить модель 98, как

  • ./configure
  • ./configure --enable-model=98

Тогда вы c а также включить 181, вызвав configure как ./configure --enable-model=181. Или для этого значения любого номера модели, как мы устанавливаем enable_model быть значение, передаваемые в

Затем в Makefile.am:.

proj_SOURCES =    \ 
    ../bac.c    \ 
    ../conf.c    \ 
    ../cw.c    \ 

if MODEL_98 
proj_SOURCES +=   \ 
    ../dm/98/interfaces.c \ 
    ../dm/98/device.c  \ 
    ../dm/98/ging.c  \ 
    ../dm/98/wa.c     

endif 
if MODEL_181 
proj_SOURCES +=   \ 
    ../dm/181/fi.c 
endif 

Обратите внимание на использовании if и не ifdef и отсутствие цитируя около MODEL_98.

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