Makefile helps

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

  1. The problem statement, all variables and given/known data:
    The code in project2 is for a program that formats C++ code into HTML for presentation in a webpage. For example, here is the web page produced by running the command
./cpp2html < ~/UnixCourse/compileAsst/guess.cpp > guess.html

(once the program has been successfully compiled, of course).

This program would have been a massive undertaking to write in pure C or C++, but was actually put together quite quickly using a software tool called �flex� that was originally developed for use in building compilers. Whats interesting about flex is that it actually writes out the program code for a substantial portion of a compiler (the �scanner� or �lexical analyzer�) from a (relatively speaking) simple description of what the language being processed looks like.

The steps necessary to produce this program are:

Compile cpp2html.c to produce cpp2html.o. ( Important: the source code in this project is C, not C++, and so must be compiled and linked with gcc, not g++.)

Run the command

flex cppscanner.l

to produce the file lex.yy.c from the language description in cppscanner.l .

Compile lex.yy.c to produce lex.yy.o. (This often produces a warning message about extra tokens. Ignore it.)

Link the the .o files to produce an executable program named cpp2html

Write a makefile that will carry out these steps. Your makefile should result in only the minimum required amount of steps when any input file to this process is changed. (Note: you will probably not be able to base this makefile upon my self-updating makefile as in the earlier part of the assignment. Instead, you will probably find it necessary to write this one from scratch.

  1. The attempts at a solution (include all code and scripts):
cpp2html: cpp2html.o lex.yy.o
        gcc -g -DDEBUG cpp2html.o lex.yy.o
        mv a.out cpp2html

lex.yy.o: lex.yy.c
        gcc -g -DDEBUG -c lex.yy.c

lex.yy.c:
        flex cppscanner.l

cpp2html.o: cpp2html.c
        gcc -g -DDEBUG -c cpp2html.c

when i ran the code to check my makefile it gave the error

"Your makefile does not invoke flex when only cppscanner.l has been changed:
make: `cpp2html' is up to date."
  1. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):
    Old Dominion University, Norfolk Virginia, United States. Professor Steven Zeil, CS 252

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).

List cppscanner.l as a dependency of lex.yy.c, a la

lex.yy.c:cppscanner.l