Je compile et débogue mon petit projet avec msys et MinGW. Parfois, il compile très bien, mais environ 2/3 du temps imprime à la place ce message d'erreur:MinGW comportement ennuyeux, parfois compile, parfois non?
include/player.h:1:0: fatal error: can't create precompiled header
bazglx.exe:invalid argument
compilation terminated.
make: *** [bazglx.exe] Error 1
La ligne supérieure était en finnois si je devais traduire et il ne peut pas être identique à un anglais. Voici mon makefile:
CC = g++
IDIR = include
ODIR = obj
SDIR = src
CFLAGS = -I $(IDIR) -static-libgcc -static-libstdc++ -Wall -ggdb
LFLAGS = -lSDL_gfx
_OBJ = main.o init.o mainloop.o render.o map.o player.o
_DEPS = init.h mainloop.h render.h map.h player.h
OBJ = $(patsubst %.o, $(ODIR)/%.o, $(_OBJ))
DEPS = $(patsubst %.h, $(IDIR)/%.h, $(_DEPS))
$(ODIR)/%.o:$(SDIR)/%.cpp
$(CC) $^ -o [email protected] `sdl-config --cflags` $(CFLAGS) -c
bazglx.exe:$(OBJ) $(DEPS)
$(CC) $^ -o [email protected] `sdl-config --libs --cflags` $(CFLAGS) $(LFLAGS)
Parfois, il affiche même le message d'erreur, mais crée un exe corrompu. Il n'y a rien de spécial au début du fichier qu'il blâme et il a même blâmé les autres fichiers. C'est vraiment déroutant et ennuyeux et ça ralentit vraiment mes progrès.
Je ne suis pas sûr de ce que cela signifie. Pouvez-vous vérifier votre espace disque et vous assurer que vous en avez assez? De même, si vous définissez la variable d'environnement 'LANG' sur la valeur' C', tous les messages seront imprimés en anglais. – MadScientist
J'ai certainement assez d'espace, le programme n'est pas grand. Et j'ai reçu le message en anglais et c'est identique. – Mihq
Je changerais 'SDL_CFLAGS: = $ (shell sdl-config --cflags)' et 'SDL_LDFLAGS: = $ (shell sdl-config --libs)'. Puis 'CFLAGS: = ... $ (SDL_CFLAGS)' et 'LDFLAGS: = ... $ (SDL_LDFLAGS)'. Ensuite, n'utilisez que les CFLAGS et les LDFLAGS sur la route. De plus, déplacez «-static-libgcc -static-libstdC++» vers «LDFLAGS» car ce sont vraiment des indicateurs pour lier, ** pas ** compilation, et supprimez «CFLAGS» de la phase de liaison, c'est-à-dire laissez seulement «LDFLAGS» sur le dernière ligne. –