user12109355
user12109355

Reputation:

mingw32-make only runs the first dependency line

My Makefile:

helloworldlib.obj: helloworldlib.cpp
    g++ -Wall -o helloworldlib.obj -c helloworldlib.cpp

helloworld.obj: source.cpp
    g++ -Wall -o helloworld.obj -c source.cpp

helloworld.exe: source.cpp helloworld.obj
    g++ -Wall -o helloworld.exe helloworld.obj helloworldlib.obj

I'm not sure what's wrong with this, when I run mingw32-make it only executes the first g++ -Wall -o helloworldlib.obj -c helloworldlib.cpp. As far as I know this makefile is syntactically correct, mingw just doesn't seem to be able to find the other lines.

Upvotes: 1

Views: 254

Answers (1)

jacob
jacob

Reputation: 1630

This is how make works. If no target is provided on the command line (e.g. mingw32-make helloworld.exe), by default it builds the first target defined in the file. See for instance: https://stackoverflow.com/a/2057716/2249356.

As a quick fix, you can just move the rule for helloworld.exe to the top of the file and then make will build all.

And, I think that the last rule is supposed to read

helloworld.exe: helloworld.obj helloworldlib.obj
    g++ -Wall -o helloworld.exe helloworld.obj helloworldlib.obj

rather then with the source.cpp and its object code helloworld.obj as dependencies.

Upvotes: 1

Related Questions