automake使用感悟

news/2024/11/25 7:57:27/

生成步骤

autoscan 生成 configure.scan
mv configure.scan configure.ac
修改 configure.ac
 添加 AM_INIT_AUTOMAKE(hello, 1.0)
 AC_OUTPUT(Makefile)
aclocal 生成aclocal.m4
autoheader 生成config.h
自己去写各个目录下的Makefile.am
automake --add-missing -> 根据 Makefile.am 生成 Makefile.in
然后执行./configure 生成 Makefile 文件

形成的Makefile如下:

# Makefile.in generated by automake 1.15 from Makefile.am.
# Makefile.  Generated from Makefile.in by configure.# Copyright (C) 1994-2014 Free Software Foundation, Inc.# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.am__is_gnu_make = { \if test -z '$(MAKELEVEL)'; then \false; \elif test -n '$(MAKE_HOST)'; then \true; \elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \true; \else \false; \fi; \
}
am__make_running_with_option = \case $${target_option-} in \?) ;; \*) echo "am__make_running_with_option: internal error: invalid" \"target option '$${target_option-}' specified" >&2; \exit 1;; \esac; \has_opt=no; \sane_makeflags=$$MAKEFLAGS; \if $(am__is_gnu_make); then \sane_makeflags=$$MFLAGS; \else \case $$MAKEFLAGS in \*\\[\ \	]*) \bs=\\; \sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \| sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \esac; \fi; \skip_next=no; \strip_trailopt () \{ \flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \}; \for flg in $$sane_makeflags; do \test $$skip_next = yes && { skip_next=no; continue; }; \case $$flg in \*=*|--*) continue;; \-*I) strip_trailopt 'I'; skip_next=yes;; \-*I?*) strip_trailopt 'I';; \-*O) strip_trailopt 'O'; skip_next=yes;; \-*O?*) strip_trailopt 'O';; \-*l) strip_trailopt 'l'; skip_next=yes;; \-*l?*) strip_trailopt 'l';; \-[dEDm]) skip_next=yes;; \-[JT]) skip_next=yes;; \esac; \case $$flg in \*$$target_option*) has_opt=yes; break;; \esac; \done; \test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/hello
pkgincludedir = $(includedir)/hello
pkglibdir = $(libdir)/hello
pkglibexecdir = $(libexecdir)/hello
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
bin_PROGRAMS = hello$(EXEEXT)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \$(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am_hello_OBJECTS = hello.$(OBJEXT)
hello_OBJECTS = $(am_hello_OBJECTS)
hello_LDADD = $(LDADD)
AM_V_P = $(am__v_P_$(V))
am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_$(V))
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
am__v_GEN_0 = @echo "  GEN     " $@;
am__v_GEN_1 = 
AM_V_at = $(am__v_at_$(V))
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
am__v_at_1 = 
DEFAULT_INCLUDES = -I.
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_$(V))
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
am__v_CC_0 = @echo "  CC      " $@;
am__v_CC_1 = 
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_$(V))
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
am__v_CCLD_0 = @echo "  CCLD    " $@;
am__v_CCLD_1 = 
SOURCES = $(hello_SOURCES)
DIST_SOURCES = $(hello_SOURCES)
am__can_run_installinfo = \case $$AM_UPDATE_INFO_DIR in \n|no|NO) false;; \*) (install-info --version) >/dev/null 2>&1;; \esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \$(LISP)config.h.in
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates.  Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\BEGIN { nonempty = 0; } \{ items[$$0] = 1; nonempty = 1; } \END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique.  This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \list='$(am__tagged_files)'; \unique=`for i in $$list; do \if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
AM_RECURSIVE_TARGETS = cscope
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in compile \depcomp install-sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \if test -d "$(distdir)"; then \find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \&& rm -rf "$(distdir)" \|| { sleep 5 && rm -rf "$(distdir)"; }; \else :; fi
am__post_remove_distdir = $(am__remove_distdir)
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
DIST_TARGETS = dist-gzip
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = ${SHELL} /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get/missing aclocal-1.15
AMTAR = $${TAR-tar}
AM_DEFAULT_VERBOSITY = 1
AUTOCONF = ${SHELL} /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get/missing autoconf
AUTOHEADER = ${SHELL} /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get/missing autoheader
AUTOMAKE = ${SHELL} /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get/missing automake-1.15
AWK = mawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS = 
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
ECHO_C = 
ECHO_N = -n
ECHO_T = 
EGREP = /bin/grep -E
EXEEXT = 
GREP = /bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LDFLAGS = 
LIBOBJS = 
LIBS = 
LTLIBOBJS = 
MAKEINFO = ${SHELL} /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get/missing makeinfo
MKDIR_P = /bin/mkdir -p
OBJEXT = o
PACKAGE = hello
PACKAGE_BUGREPORT = BUG-REPORT-ADDRESS
PACKAGE_NAME = FULL-PACKAGE-NAME
PACKAGE_STRING = FULL-PACKAGE-NAME VERSION
PACKAGE_TARNAME = full-package-name
PACKAGE_URL = 
PACKAGE_VERSION = VERSION
PATH_SEPARATOR = :
SET_MAKE = 
SHELL = /bin/bash
STRIP = 
VERSION = 1.0
abs_builddir = /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get
abs_srcdir = /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get
abs_top_builddir = /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get
abs_top_srcdir = /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get
ac_ct_CC = gcc
am__include = include
am__leading_dot = .
am__quote = 
am__tar = $${TAR-tar} chof - "$$tardir"
am__untar = $${TAR-tar} xf -
bindir = ${exec_prefix}/bin
build_alias = 
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host_alias = 
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = ${SHELL} /home/wxw/wxw_sambar/TEST_FOR_MORE_STRONG/TEST_FOR_GIT_COMMOD/file_get/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = $(MKDIR_P)
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
runstatedir = ${localstatedir}/run
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias = 
top_build_prefix = 
top_builddir = .
top_srcdir = .
AUTOMAKE_OPTIONS = foreign  
hello_SOURCES = hello.c
all: config.h$(MAKE) $(AM_MAKEFLAGS) all-am.SUFFIXES:
.SUFFIXES: .c .o .obj
am--refresh: Makefile@:
$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)@for dep in $?; do \case '$(am__configure_deps)' in \*$$dep*) \echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \&& exit 0; \exit 1;; \esac; \done; \echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \$(am__cd) $(top_srcdir) && \$(AUTOMAKE) --foreign Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status@case '$?' in \*config.status*) \echo ' $(SHELL) ./config.status'; \$(SHELL) ./config.status;; \*) \echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \esac;$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)$(SHELL) ./config.status --recheck$(top_srcdir)/configure:  $(am__configure_deps)$(am__cd) $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4):  $(am__aclocal_m4_deps)$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):config.h: stamp-h1@test -f $@ || rm -f stamp-h1@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status@rm -f stamp-h1cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in:  $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER))rm -f stamp-h1touch $@distclean-hdr:-rm -f config.h stamp-h1
install-binPROGRAMS: $(bin_PROGRAMS)@$(NORMAL_INSTALL)@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \if test -n "$$list"; then \echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \fi; \for p in $$list; do echo "$$p $$p"; done | \sed 's/$(EXEEXT)$$//' | \while read p p1; do if test -f $$p \; then echo "$$p"; echo "$$p"; else :; fi; \done | \sed -e 'p;s,.*/,,;n;h' \-e 's|.*|.|' \-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \sed 'N;N;N;s,\n, ,g' | \$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \if ($$2 == $$4) files[d] = files[d] " " $$1; \else { print "f", $$3 "/" $$4, $$1; } } \END { for (d in files) print "f", d, files[d] }' | \while read type dir files; do \if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \test -z "$$files" || { \echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \} \; doneuninstall-binPROGRAMS:@$(NORMAL_UNINSTALL)@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \files=`for p in $$list; do echo "$$p"; done | \sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \-e 's/$$/$(EXEEXT)/' \`; \test -n "$$list" || exit 0; \echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \cd "$(DESTDIR)$(bindir)" && rm -f $$filesclean-binPROGRAMS:-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)hello$(EXEEXT): $(hello_OBJECTS) $(hello_DEPENDENCIES) $(EXTRA_hello_DEPENDENCIES) @rm -f hello$(EXEEXT)$(AM_V_CCLD)$(LINK) $(hello_OBJECTS) $(hello_LDADD) $(LIBS)mostlyclean-compile:-rm -f *.$(OBJEXT)distclean-compile:-rm -f *.tab.cinclude ./$(DEPDIR)/hello.Po.c.o:$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
#	$(AM_V_CC)source='$<' object='$@' libtool=no \
#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
#	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<.c.obj:$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
#	$(AM_V_CC)source='$<' object='$@' libtool=no \
#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
#	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`ID: $(am__tagged_files)$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tagstags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)set x; \here=`pwd`; \$(am__define_uniq_tagged_files); \shift; \if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \test -n "$$unique" || unique=$$empty_fix; \if test $$# -gt 0; then \$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \"$$@" $$unique; \else \$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \$$unique; \fi; \fi
ctags: ctags-amCTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)$(am__define_uniq_tagged_files); \test -z "$(CTAGS_ARGS)$$unique" \|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \$$uniqueGTAGS:here=`$(am__cd) $(top_builddir) && pwd` \&& $(am__cd) $(top_srcdir) \&& gtags -i $(GTAGS_ARGS) "$$here"
cscope: cscope.filestest ! -s cscope.files \|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
clean-cscope:-rm -f cscope.files
cscope.files: clean-cscope cscopelist
cscopelist: cscopelist-amcscopelist-am: $(am__tagged_files)list='$(am__tagged_files)'; \case "$(srcdir)" in \[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \*) sdir=$(subdir)/$(srcdir) ;; \esac; \for i in $$list; do \if test -f "$$i"; then \echo "$(subdir)/$$i"; \else \echo "$$sdir/$$i"; \fi; \done >> $(top_builddir)/cscope.filesdistclean-tags:-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags-rm -f cscope.out cscope.in.out cscope.po.out cscope.filesdistdir: $(DISTFILES)$(am__remove_distdir)test -d "$(distdir)" || mkdir "$(distdir)"@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \list='$(DISTFILES)'; \dist_files=`for file in $$list; do echo $$file; done | \sed -e "s|^$$srcdirstrip/||;t" \-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \case $$dist_files in \*/*) $(MKDIR_P) `echo "$$dist_files" | \sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \sort -u` ;; \esac; \for file in $$dist_files; do \if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \if test -d $$d/$$file; then \dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \if test -d "$(distdir)/$$file"; then \find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \fi; \if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \fi; \cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \else \test -f "$(distdir)/$$file" \|| cp -p $$d/$$file "$(distdir)/$$file" \|| exit 1; \fi; \done-test -n "$(am__skip_mode_fix)" \|| find "$(distdir)" -type d ! -perm -755 \-exec chmod u+rwx,go+rx {} \; -o \! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \! -type d ! -perm -400 -exec chmod a+r {} \; -o \! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \|| chmod -R a+r "$(distdir)"
dist-gzip: distdirtardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz$(am__post_remove_distdir)dist-bzip2: distdirtardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2$(am__post_remove_distdir)dist-lzip: distdirtardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz$(am__post_remove_distdir)dist-xz: distdirtardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz$(am__post_remove_distdir)dist-tarZ: distdir@echo WARNING: "Support for distribution archives compressed with" \"legacy program 'compress' is deprecated." >&2@echo WARNING: "It will be removed altogether in Automake 2.0" >&2tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z$(am__post_remove_distdir)dist-shar: distdir@echo WARNING: "Support for shar distribution archives is" \"deprecated." >&2@echo WARNING: "It will be removed altogether in Automake 2.0" >&2shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz$(am__post_remove_distdir)dist-zip: distdir-rm -f $(distdir).zipzip -rq $(distdir).zip $(distdir)$(am__post_remove_distdir)dist dist-all:$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'$(am__post_remove_distdir)# This target untars the dist file and tries a VPATH configuration.  Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: distcase '$(DIST_ARCHIVES)' in \*.tar.gz*) \GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\*.tar.bz2*) \bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\*.tar.lz*) \lzip -dc $(distdir).tar.lz | $(am__untar) ;;\*.tar.xz*) \xz -dc $(distdir).tar.xz | $(am__untar) ;;\*.tar.Z*) \uncompress -c $(distdir).tar.Z | $(am__untar) ;;\*.shar.gz*) \GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\*.zip*) \unzip $(distdir).zip ;;\esacchmod -R a-w $(distdir)chmod u+w $(distdir)mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_instchmod a-w $(distdir)test -d $(distdir)/_build || exit 0; \dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \&& am__cwd=`pwd` \&& $(am__cd) $(distdir)/_build/sub \&& ../../configure \$(AM_DISTCHECK_CONFIGURE_FLAGS) \$(DISTCHECK_CONFIGURE_FLAGS) \--srcdir=../.. --prefix="$$dc_install_base" \&& $(MAKE) $(AM_MAKEFLAGS) \&& $(MAKE) $(AM_MAKEFLAGS) dvi \&& $(MAKE) $(AM_MAKEFLAGS) check \&& $(MAKE) $(AM_MAKEFLAGS) install \&& $(MAKE) $(AM_MAKEFLAGS) installcheck \&& $(MAKE) $(AM_MAKEFLAGS) uninstall \&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \distuninstallcheck \&& chmod -R a-w "$$dc_install_base" \&& ({ \(cd ../.. && umask 077 && mkdir "$$dc_destdir") \&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \} || { rm -rf "$$dc_destdir"; exit 1; }) \&& rm -rf "$$dc_destdir" \&& $(MAKE) $(AM_MAKEFLAGS) dist \&& rm -rf $(DIST_ARCHIVES) \&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \&& cd "$$am__cwd" \|| exit 1$(am__post_remove_distdir)@(echo "$(distdir) archives ready for distribution: "; \list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:@test -n '$(distuninstallcheck_dir)' || { \echo 'ERROR: trying to run $@ with an empty' \'$$(distuninstallcheck_dir)' >&2; \exit 1; \}; \$(am__cd) '$(distuninstallcheck_dir)' || { \echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \exit 1; \}; \test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \|| { echo "ERROR: files left after uninstall:" ; \if test -n "$(DESTDIR)"; then \echo "  (check DESTDIR support)"; \fi ; \$(distuninstallcheck_listfiles) ; \exit 1; } >&2
distcleancheck: distclean@if test '$(srcdir)' = . ; then \echo "ERROR: distcleancheck can only run from a VPATH build" ; \exit 1 ; \fi@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \|| { echo "ERROR: files left in build directory after distclean:" ; \$(distcleancheck_listfiles) ; \exit 1; } >&2
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) config.h
installdirs:for dir in "$(DESTDIR)$(bindir)"; do \test -z "$$dir" || $(MKDIR_P) "$$dir"; \done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-aminstall-am: all-am@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-aminstallcheck: installcheck-am
install-strip:if test -z '$(STRIP)'; then \$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \install; \else \$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \fi
mostlyclean-generic:clean-generic:distclean-generic:-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)maintainer-clean-generic:@echo "This command is intended for maintainers to use"@echo "it deletes files that may require special tools to rebuild."
clean: clean-amclean-am: clean-binPROGRAMS clean-generic mostlyclean-amdistclean: distclean-am-rm -f $(am__CONFIG_DISTCLEAN_FILES)-rm -rf ./$(DEPDIR)-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \distclean-hdr distclean-tagsdvi: dvi-amdvi-am:html: html-amhtml-am:info: info-aminfo-am:install-data-am:install-dvi: install-dvi-aminstall-dvi-am:install-exec-am: install-binPROGRAMSinstall-html: install-html-aminstall-html-am:install-info: install-info-aminstall-info-am:install-man:install-pdf: install-pdf-aminstall-pdf-am:install-ps: install-ps-aminstall-ps-am:installcheck-am:maintainer-clean: maintainer-clean-am-rm -f $(am__CONFIG_DISTCLEAN_FILES)-rm -rf $(top_srcdir)/autom4te.cache-rm -rf ./$(DEPDIR)-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-genericmostlyclean: mostlyclean-ammostlyclean-am: mostlyclean-compile mostlyclean-genericpdf: pdf-ampdf-am:ps: ps-amps-am:uninstall-am: uninstall-binPROGRAMS.MAKE: all install-am install-strip.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \clean-binPROGRAMS clean-cscope clean-generic cscope \cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \distcheck distclean distclean-compile distclean-generic \distclean-hdr distclean-tags distcleancheck distdir \distuninstallcheck dvi dvi-am html html-am info info-am \install install-am install-binPROGRAMS install-data \install-data-am install-dvi install-dvi-am install-exec \install-exec-am install-html install-html-am install-info \install-info-am install-man install-pdf install-pdf-am \install-ps install-ps-am install-strip installcheck \installcheck-am installdirs maintainer-clean \maintainer-clean-generic mostlyclean mostlyclean-compile \mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \uninstall-am uninstall-binPROGRAMS.PRECIOUS: Makefile# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

总结

个人觉得,光是修改configure.ac 和编写Makefile.am 这两个步骤, 还不如从头到尾去学习一边Makefile的写法, 而且生成的文件不会这么复杂, 很多github的linux工程都有对应的Makefile文件, 可以参考


http://www.ppmy.cn/news/6110.html

相关文章

【网络编程】第四章 网络套接字(守护进程+TCP英译汉+TCP通协议讯流程+TCP和UDP对比)

&#x1f3c6;个人主页&#xff1a;企鹅不叫的博客 ​ &#x1f308;专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接&#xff1a;代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

使用 SQL 别名简化查询并自定义结果

别名能够在不影响基础表或视图的情况下临时重命名表或列。作为大多数甚至所有关系数据库管理系统都支持的 SQL 功能&#xff0c;别名是简化查询和/或自定义结果集中列标题的好方法。在这篇文章中&#xff0c;我们将使用 Navicat Premium 16 来完成这两项工作。 重命名列 许多…

Java: static,final,代码块 的详解

Java: static&#xff0c;final&#xff0c;代码块 的详解 每博一文案 山本文绪说过这样一句话&#xff1a;哪些决定放弃了的事&#xff0c;就请放弃得干干净净。哪些决定再也不见面的人&#xff0c;就真 的不要再见面了&#xff0c;不要再做背叛自己的事&#xff0c;如果想要…

【SpringMVC】请求参数的绑定

1.绑定说明 1.1 绑定的机制 我们都知道&#xff0c;表单中请求参数都是基于 keyvalue 的。SpringMVC 绑定请求参数的过程是通过把表单提交请求参数&#xff0c;作为控制器中方法参数进行绑定的。 例如&#xff1a; <a href"account/findAccount?accountId10"&…

基于防火墙双击热备三层网络规划_ensp综合实验

作者&#xff1a;BSXY_19计科_陈永跃BSXY_信息学院注&#xff1a;未经允许禁止转发任何内容基于防火墙双击热备三层网络规划_ensp综合实验前言及技术/资源下载说明&#xff08; **未经允许禁止转发任何内容** &#xff09;插曲&#xff1a;基于eNSP中大型校园/企业网络规划与设…

机器学习 | 决策树

一.基本原理 决策树是一种树状结构模型&#xff0c;每一个根节点都是一个特征判断&#xff0c;它的叶子节点就是它的特征分类结果 决策树是一种分类和回归的基本模型&#xff0c;是一棵树的形式&#xff0c;其实就是将平时所说的 if-else 语句构建成了树的形式。决策树主要包…

阿里灵杰:与开发者一起推动AI创新落地

对于人工智能领域而言&#xff0c;“AIGC”无疑是贯穿2022年的热点。12月16日&#xff0c;Science杂志发布了2022年度科学十大突破&#xff0c;AIGC赫然在列。以文生图&#xff0c;对话机器人等AI创新应用的落地&#xff0c;引发一轮又一轮的全民狂欢热潮。AI技术蓬勃发展&…

微信小程序之实时聊天系统——页面介绍

目录 系统结果展示&#xff1a; 系统的页面说明&#xff1a; 1.我们首先再app.json中创建四个tabBar页面&#xff08;消息、联系人、用户列表、我的&#xff09; 2.消息页面&#xff1a; 3.联系人页面&#xff1a; 4.用户列表页面&#xff1a; 5.我的页面&#xff1a; 欢…