user478571
user478571

Reputation:

how can I compile header and its run file without main

I have two files without main

I want compile these in one makefile

My makefile is ;

CXX = g++
CXXFLAGS_W = -Werror -Wunused-variable -Wunused-value -Wunused-function \
         -Wfloat-equal -Wall
CXXFLAGS_M = -ansi  -pedantic-errors
CXXFLAGS   = ${CXXFLAGS_M} ${CXFLAGS_W}

all:    main
       ./main

When I use like make X , compiler gives some error "undefined reference to main ". Due to that reason, I want new makefile. X can be any name .

Upvotes: 1

Views: 3367

Answers (1)

paxdiablo
paxdiablo

Reputation: 882626

You would generally have something like:

X.o: X.cpp X.h
    g++ -c -o X.o X.cpp  # or $(CXX) $(CXXFLAGS) -c -o ...

with whatever other flags you needed. -c tells the compiler to just compile rather than compile and link, and you don't usually compile the header file directly, rather you #include it in the cpp file.


Here's a makefile which combines two separate source files into a single executable:

xy: x.o y.o
    g++ -o xy x.o y.o

x.o: x.cpp x.hpp y.hpp
    g++ -c -o x.o x.cpp

y.o: y.cpp y.hpp
    g++ -c -o y.o y.cpp

The x.cpp file includes x.hpp and y.hpp while y.cpp only includes y.hpp. The final executable is xy.

The first rule builds the executable from the two object files. The second and third rules builds the two object files, which is what I think you're asking for in the question.

Upvotes: 1

Related Questions