I ran into an issue with make. I have 3 files.
main.cpp | src/Math/Vector2.cpp | src/Math/Vector2.hpp
Here is my MakeFile:
main: vector2.o main.o
g++ -o main.o vector2.o
main.o: main.cpp
g++ -o main.o main.cpp -c
vector2.o: src/Math/Vector2.cpp src/Math/Vector2.hpp
g++ -o vector2.o src/Math/Vector2.cpp -lm -c
When i copy these commands manually , it compiles perfectly fine. However $make main returns
g++ main.cpp -o main
/tmp/ccnRZ4UD.o: In function `main':
main.cpp:(.text+0x42): undefined reference to `
phy2d::Maths::Vector2f::Vector2f(double, double)'
main.cpp:(.text+0x66): undefined reference to `
phy2d::Maths::Vector2f::Vector2f(double, double)'
main.cpp:(.text+0x79): undefined reference to `
phy2d::Maths::Vector2f::distance(phy2d::Maths::Vector2f const&)
const'
collect2: error: ld returned 1 exit status
<builtin>: recipe for target 'main' failed
make: *** [main] Error 1
Any ideas??
make --dry-run
, this will show you exact commands make executes. Then you should be able to find in which step this error occurs and why... – Kamil S Jarong++ main.cpp -o main
That is not the same as what is in the Makefile. Makfile has extra-c
. – kaylummain
executable. There are two targets which both producemain.o
– kaylum