Requirements
- Create a "makefile" that will manage the construction of a program
- The name of the makefile must be: makefile
- The make file must produce an executable file. The name of the executable file must be:
myProgram
- Use the g++ compiler (This is the C++ compiler from our friends at GNU. It is on Einstein)
- Base the makefile on the source files listed below.
- The makefile and the source files must be located in $HOME/itec400/homework
- Make sure the permissions on the your itec400 directory are 705
- Make sure the permissions on your make file and your source files are 705
Source files
Create the following 5 files under your "homework" directory:
Source File 1: main.cpp
#include "employee.h"
#include "address.h"
int main()
{
printf("program works\n");
}
Source File 2: employee.cpp
#include "address.h"
Source File 3: address.cpp
#include
Source File 4: employee.h
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#endif
Source File 5: address.h
#ifndef ADDRESS_H
#define ADDRESS_H
#include
#endif
Testing
The script "test_build.sh" is utilized to invoke the "make" command. You can obtain a copy "test_build.sh" at the following location:
https://cs.franklin.edu/~dandrear/itec400/Misc/test_build.sh If you have written your
"makefile" properly, execution of the test_build.sh script should generate the following output:
1. touch everything - everything should build
g++ -c main.cpp
g++ -c address.cpp
g++ -c employee.cpp
g++ -o myProgram main.o address.o employee.o
2. touch nothing - nothing should build
make: 'myProgram' is up to date.
3. touch address.h - main and employee should build
g++ -c main.cpp
g++ -c employee.cpp
g++ -o myProgram main.o address.o employee.o
4. touch main.cpp - only main.o should build
g++ -c main.cpp
g++ -o myProgram main.o address.o employee.o
5. touch employee.cpp - only employee.o should build
g++ -c employee.cpp
g++ -o myProgram main.o address.o employee.o
6. touch address.cpp - only address.o should build
g++ -c address.cpp
g++ -o myProgram main.o address.o employee.o
Remove myProgram and all object files (.o)