Comp 2673, Spring 2002 April 1, lecture notes Recall from last week: We learned about g++ and some of its flags: % g++ foo.cpp compiles and links the source in foo.cpp, creates executable called a.out % g++ -o foo foo.cpp compiles and links foo.cpp, giving the executable the name foo % g++ -c foo.cpp does a separate compilation of foo.c, creating object file foo.o % g++ -o foo foo1.o foo2.o foo3.o links all listed object files into an executable called foo Now it's a pain to keep typing in these commands, so we use the program called "make" along with a "makefile" to keep track of which files depends on which files, and how to build the final program(s). Let's look at the simplest possible makefile: Makefile00. (If you want to try running this yourself, then copy all files from makestuff. These files can also be found in the directory ~ftl/public_html/courses/2673s02/makestuff) The program "make" by default uses the file called "makefile" or "Makefile". So we'll move Makefile00 to makefile. To build the program greetme, we type % make greetme Note: if you want to specify a makefile to use other than the default, use the -f flag for the program make, as in % make -f Makefile00 greetme Now let's take separate compilation into account. Look at and run Makefile0 Now say that I have a program "gold" that depends on 5 .cpp files and 4 .h files. How do I recompile? What if a header changes?> For this more complicated situation handled with make, look at Makefile1 And to add header dependencies, look at Makefile2