automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Atomic control of subdirectories with recursive automake


From: Bob Proulx
Subject: Re: Atomic control of subdirectories with recursive automake
Date: Mon, 25 Jul 2005 10:27:34 -0600
User-agent: Mutt/1.5.9i

Brian wrote:
> I am in the planning stages of autoconfiscating a large project. The project 
> will have a top-level makefile.am <http://makefile.am> and then several 

Did you expect that to be a http web link?

> subdirectories which each generate an executeable and have a
> makefile.am<http://makefile.am>.

Every directory will have a Makefile.am file and a recursive make will
be performed.  Okay.  Sounds fine.  That is all normal.

> A specific feature I have been asked for is the ability to jump into any of 
> the given subdirectories and run only that makfile, compiling only that 
> program.

That is a normal feature of automake generated Makefiles.  Only that
directory will be made.  However if that directory depends upon
another directory such as a library then that other directory will
need to be made first.  A top level make will traverse all
directories.

But what you are talking about there is just edit, make, edit, make,
in a single directory and that is all standard and works fine.

It is also possible to optionally configure automake to create only a
top level Makefile.  But that does not sound like what you want.  It
is optional, so just don't do it.

> Additionally, at configure time an option such as --enable-debug 
> should be available, and if set, should create an additional debug version 
> of each subdirectory using the same source files (with optionally different 
> flags to custom programs) and leave the intermediate object files
> behind.

That can probably be done and someone will suggest a way to do it.
But normally if that is what you want then you would use separate
build directories.  While in your top level project directory:

  mkdir ../project-optimized
  cd ../project-optimized
  ../project/configure CFLAGS=-O

  mkdir ../project-debug
  cd ../project-debug
  ../project/configure CFLAGS=-g

  mkdir ../project-profile
  cd ../project-profile
  ../project/configure CFLAGS=-p

This will build three different copies of your project, each with the
build flags you gave it.

> In some sample tests where the only source file was main.c and
> bin_PROGRAMS = hello helloDebug, I was left with only one main.o. Of
> course I couldn't have two, but there was no "autorenaming" so to
> speak.

By building in separate directories as in the above there is no need
to rename because the programs are built in different directories.

> To recap:
> 
>    - Optionally make subdirectories individually 

Normal for recursive make configurations.

>    - Optionally keep separate intermediate files of simultaneous regular 
>    and debug builds

Build in separate directories.

>     - Pass flags from configure all the way to individual debug
>    builds (I know how to enable the flags, just now how to make sure
>    they make it all the way down)

When passed to configure those flags will be configured into all of
the Makefiles below.  To change flags you configure with different
flags.  This is the output of AC_CONFIG_FILES and AC_OUTPUT.

Bob




reply via email to

[Prev in Thread] Current Thread [Next in Thread]