Thank you for the advice. The separate build directories would be nice. How could I ween autotools into doing it automatically?
Brian On 7/25/05, Bob Proulx <[EMAIL PROTECTED]> wrote: > > 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> < > 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><http://makefile.am>. > > Every directory will have a Makefile.am <http://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 >