C++ makefile on Linux with Multiple *.cpp files

21,318

Solution 1

you'll need to compile all .cpp files that you use (i assume they are not included somewhere). That way the compiler will know that file1.cpp and main.cpp are used together. Also I would suggest using g++ instead of gcc, because g++ is the specific c++ compiler while gcc supports C and C++.

Try using:

g++ -g -Wall -o main main.cpp file1.cpp

Also I would recommend to use Makefile variables like this:

SOURCES = main.cpp file1.cpp
g++ -g -Wall -o main $(SOURCES)

Hope this helps :)

Solution 2

but it gives me tons of bugs when i try to compile. my codes works perfectly fine on eclipse.

gcc is not a C++ compiler. Use g++ instead.

Your Makefile should look like so, it can leverage implicit rules:

all: main

CXXFLAGS+=-g -Wall
LDLIBS+=-lstdc++
main: file1.o main.o
Share:
21,318
NewFile
Author by

NewFile

Updated on October 03, 2020

Comments

  • NewFile
    NewFile over 3 years

    I'm trying to make a makefile with multiple files. Can someone help me? The files I have are file1.cpp, file2.h and main.cpp

    file1.cpp contains my functions. file2.h contains the declaration of my functions.

    main.cpp [includes file2.h in the code] file1.cpp [includes file2.h in the code]

    i did

    all: main
    gcc -g -Wall -o main main.cpp
    

    but it gives me tons of bugs when i try to compile. my codes works perfectly fine on eclipse.

  • elimirks
    elimirks over 10 years
    gcc is a C++ compiler. g++ uses gcc, but just in a way that it treats all files as C++ files (including *.c files)
  • NewFile
    NewFile over 10 years
    thanks it helps a lot. turned out i can just drag my eclipse makefile over as well XD