I am having a problem wih the compiling of my code.
The whole program consists of a driver program and a header file.
the problem is showing up around where it is compiling the header file. since the header file only has template functions in it and no input file i keep getting an error.

# Compiler variables
CCFLAGS = -ansi -Wall

# Rule to link object code files to create executable file
driver: driver.o heapsort.o
	g++ $(CCFLAGS) -o assign6 assign6.o heapsort.o

# Rules to compile source code files to object code
driver.o: driver.cpp heapsort.h
	g++ $(CCFLAGS) -c driver.cpp

heapsort.o: heapsort.h
	g++ $(CCFLAGS) -c

the error

$ make
g++ -ansi -Wall -c
g++: no input files
make: *** [heapsort.o] Error 1

I am reletively new to makefiles and don't know if there is a special syntax to use when there are no input files.

thank you for your help in advance

just wondering if the error could be that since there is no corresponding .cpp file would there even be a need to make the .h into a .o or could i just compile the driver.pp with the .h and have it work that way?

u need a heapsort.cpp file for creating heapsort.o
U are not giving input to the g++ command in line #13 in the Makefile.


If u have only a heapsort.h file where the whole thing is defined and u have included this file from driver.cpp then u can simply remove the heapsort.o from your Makefile making it look like

# Compiler variables
CCFLAGS = -ansi -Wall

# Rule to link object code files to create executable file
driver: driver.o
	g++ $(CCFLAGS) -o driver assign6.o heapsort.o #changed the target name

# Rules to compile source code files to object code
driver.o: driver.cpp heapsort.h
	g++ $(CCFLAGS) -c driver.cpp

OR if u want the heapsort.cpp file that would be better and that is the normal standard that u should follow. Anyway the above will also work but I suggest u to move the function definitions to heapsort.cpp file keeping the declaration only in heapsort.h file and then modifying the Makefile accordingly.


One more suggestion is that U can remove the -ansi option while compiling. It actually disables many of the features of the language.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.