objects = hello.o name.o printing.o exename = himake $(exename): $(objects) $(CC) -o $(exename) $(objects) %.o: %.cpp $(CC) -c $^
I am trying to use common suffixes, so I do not need to compile 3 files in .o first. It is assumed that all three will be executed using the% pattern.
It works great when I do it a long way, but not that.
Running the above makefile gives me the following error:
[ alex@pcc Dir]$ make cc -o himake hello.o name.o printing.o hello.o: In function `__static_initialization_and_destruction_0(int, int)': hello.cpp:(.text+0x23): undefined reference to `std::ios_base::Init::Init()' hello.o: In function `__tcf_0': hello.cpp:(.text+0x66): undefined reference to `std::ios_base::Init::~Init()'
and moreover, what I did not include
Files: hello.cpp:
// hello.cpp // standard library #include <iostream> #include <string> using namespace std; // user defined header files #include "name.h" #include "printing.h" int main () { string name; name = getName(); // getName is in name.h printHello(name); // printHello is in print.h return 0; }
name.cpp
// name.cpp // user defined header files
name.h
// name.h
printing.cpp
// printing.cpp // user defined include files
printing.h
// printing.h
source share