run_me_LDADD = ../lib/libcompat.a
run_me_CPPFLAGS = -I$(srcdir)/../lib
假设foo是一个程序或者库:
可能项 解释
通过使用AC_CHECK_LIB可以判断库是否存在,并在这里附加它们。
例如:configure.ac
AC_CHECK_LIB([efence], [malloc], [EFENCELIB=-lefence])
AC_SUBST([EFENCELIB])run_me_LDADD = ../lib/libcompat.a $(EFENCELIB)
‘make dist’和’make distacheck’将创建一个tarball包含下面列出的文件。
所有在_SOURCES中声明的。
所有在_HEADERS中声明的。
所有的在dist_…_SCRIPTS中声明的脚本。makefile.am
所有在dist_…_DATA中声明的数据文件。
…
公共文件例如ChangeLog,NEWS,等。使用automake –help可以列出这些文件。
所有在EXTRA_DIST中列出的路径和文件。makefile.am
可以根据某些条件来编译附加的程序或者关闭。例如:Makefile.am
bin_PROGRAMS = foo
if WANT_BAR
bin_PROGRAMS += bar
endif
foo_SOURCES = foo.c
bar_SOURCES = bar.c
如果WANT_BAR被设置为true将编译程序bar。
在所有的情况下都会分发foo.c和bar.c。
bin_PROGRAMS = foo
foo_SOURCES = foo.c
if WANT_BAR
foo_SOURCES += bar.c
endif
上面代码显示,根据WANT_BAR打开bar.c的分发。
上面的代码的前提是必须在configure.ac中声明WANT_BAR变量。
可以使用AM_CONDITIONAL宏。参考
AC_CHECK_HEADER([bar.h], [use_bar=yes])
AM_CONDITIONAL([WANT_BAR], [test "$use_bar" = yes])
Makefile.am的内容几乎被完整的复制到Makefile.in文件里。
‘automake’在Makefile.in附加新的规则和变量,你能实现特别的变量和宏。
你是可以在Makefile.am中定义你自己的规则
如果你make失败,试着重新建造configure文件。你可以运行autoreconf。
autoreconf --install
如果没有帮助,可以试试
autoreconf --install --force
如果仍然没有帮助,试试
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-40636-2.html
我在上海
为什么马云这么爱说啊