Compilation avec Makefile et SDL2
Bonjour,
Je suis récemment passé de l'EDI Code::Blocks à VSCode, et je commence à apprendre comment fonctionne les Makefile. Afin de tester Makefile, je travaille avec un projet simple utilisant la bibliothèque SDL2 (qui ouvre une fenêtre jaune et se ferme dès que j'appuie sur une touche).
Je teste la génération de liste de fichiers (je sais pas comment on appelle ça), mais lorsque je fais ça la compilation ne fonctionne plus pour une raison que je ne comprends pas. Je vous mets ci-dessous mon Makefile qui fonctionne, celui qui ne fonctionne pas, et le message d'erreur qui me donne :
Code:
1 2 3 4 5 6 7 8 9 10
| #Ici le Makefile où tout va bien
CXXFLAGS = -std=c++17 -Wall -Wextra
LDFLAGS = -Llib -lmingw32 -lSDL2main -lSDL2
INCFLAGS = -Iinclude
bin/main: obj/main.o
g++ $(CXXFLAGS) -o bin/main obj/main.o $(INCFLAGS) $(LDFLAGS)
obj/main.o: main.cpp
g++ $(CXXFLAGS) -o obj/main.o -c main.cpp $(INCFLAGS) $(LDFLAGS) |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #Ici celui qui me dit nope
CXXFLAGS = -std=c++17 -Wall -Wextra
LDFLAGS = -Llib -lmingw32 -lSDL2main -lSDL2
INCFLAGS = -Iinclude
ODIR := obj
OBJ = $(wildcard $(ODIR)/*.o)
bin/main: $(OBJ)
g++ $(CXXFLAGS) -o bin/main $^ $(INCFLAGS) $(LDFLAGS)
obj/main.o: main.cpp
g++ $(CXXFLAGS) -o obj/main.o -c main.cpp $(INCFLAGS) $(LDFLAGS) |
Code:
1 2 3 4 5
| g++ -std=c++17 -Wall -Wextra -o bin/main -Iinclude -Llib -lmingw32 -lSDL2main -lSDL2
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: lib/libSDL2main.a(SDL_windows_main.o): in function `main_getcmdline':
/Users/valve/release/SDL/SDL2-2.0.14-source/foo-x64/../src/main/windows/SDL_windows_main.c:71: undefined reference to `SDL_main'
collect2.exe: error: ld returned 1 exit status
mingw32-make: *** [Makefile:9: bin/main] Error 1 |
Je comprends pas vraiment cette erreur, vu que de ce que j'ai compris des directives Makefile, les deux sont équivalents... Quelqu'un pourrait m'aider à comprendre où serait le problème ?
Merci d'avance pour votre aide !