我设置了变量ALSA = 1或没有
./configure --enable-alsa=yes
or
./configure //nothing
我需要将源代码alsa.c添加到Makefile.am:
__abs_top_srcdir__bin_myprogram_SOURCES+=alsa.c
我试过了: Makefile.am:
__abs_top_srcdir__bin_myprogram_SOURCES=main.c some.c anothercode.c
if ALSA
__abs_top_srcdir__bin_myprogram_SOURCES+=alsa.c
else
__abs_top_srcdir__bin_myprogram_SOURCES+=somethingelse.c
endif
它创造了 Makefile.in以
结尾@ALSA_TRUE@ __abs_top_srcdir__bin_myprogram_SOURCES += \
@ALSA_TRUE@ alsa.c
@ALSA_FALSE@ __abs_top_srcdir__bin_myprogram_SOURCES += \
@ALSA_FALSE@ somethingelse.c
和Makefile以:
结尾# __abs_top_srcdir__bin_myprogram_SOURCES += \
# alsa.c
__abs_top_srcdir__bin_myprogram_SOURCES += \
somethingelse.c
但是我需要在这个文件的顶部包含其他源代码文件,因为这个Makefile不起作用。我希望你理解我:)。
和configure.ac的相关部分:
AC_ARG_ENABLE(alsa,
AS_HELP_STRING(
[--enable-alsa],
[enable alsa, default: no]),
[case "${enableval}" in
yes) alsa=true ;;
no) alsa=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-alsa]) ;;
esac],
[alsa=false])
AM_CONDITIONAL(ALSA, test x"$alsa" = x"true")
AM_COND_IF(ALSA,
AC_DEFINE(ALSA, 1, [Define to 0 for Something else]),[])
有什么不对?我可以使用这样的ALSA变量吗?谢谢你的帮助。
答案 0 :(得分:1)
改变这个:
__abs_top_srcdir__bin_myprogram_SOURCES=main.c some.c anothercode.c
if ALSA
__abs_top_srcdir__bin_myprogram_SOURCES+=alsa.c
else
__abs_top_srcdir__bin_myprogram_SOURCES+=somethingelse.c
endif
到此:
__abs_top_srcdir__bin_myprogram_SOURCES=main.c some.c anothercode.c
if ALSA
__abs_top_srcdir__bin_myprogram_SOURCES+=alsa.c
else
__abs_top_srcdir__bin_myprogram_SOURCES+=somethingelse.c
endif
它应该有用。
顺便说一句,你还要使configure.ac
中的代码过于复杂。这也会做同样的事情:
AC_ARG_ENABLE(alsa,
AS_HELP_STRING(
[--enable-alsa],
[enable alsa, default: no]))
AM_CONDITIONAL([ALSA], [test "x$enable_alsa" = "xyes"])
AM_COND_IF([ALSA],
[AC_DEFINE(ALSA, 1, [Define to 0 for Something else])],[])